执行没有显示shell窗口的bash脚本

时间:2016-02-04 14:14:03

标签: php windows bash shell

您好我尝试通过PHP执行bash脚本,当脚本运行时,shell界面会显示几秒钟然后消失。

然而,我需要的是一种运行bash脚本而不显示shell的方法。在下面显示的php网站上找到了execInBackground函数,但它并不适合我。最好的方法是什么?

function convert($tmpName, $fileName, $fileSize, $fileType){
    $old_path = getcwd();
    chdir('C:\xampp\htdocs\p-master\tools');
    execInBackground("test.sh");
    chdir($old_path);
}

function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
        pclose(popen("start /B ". $cmd, "r"));  
    } 
    else { 
        exec($cmd . " > /dev/null &");   
    } 
} 

编辑:出现的shell窗口是Git Bash

编辑2:仍有这个问题,尝试了所有建议的解决方案并尝试了网络上不同的解决方案,但没有运气,任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以使用PHP内置的shell_exec函数。它将通过shell执行命令,并在发生错误时将完整输出作为字符串或空值返回。

您还需要从test.sh文件中取出正在执行的脚本,并将其放入PHP函数中,并将其作为参数传递给shell_exec函数。窗口保持打开的原因是你在这里做的实际上与双击计算机上的文件以打开它实际上是相同的,你实际上告诉命令行在命令行窗口中打开这个文件,然后运行其中的脚本。

语法

string shell_exec(string $cmd);

来源

http://php.net/manual/en/function.shell-exec.php