嗨,我正在尝试通过 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 &");
}
}
编辑:出现的外壳窗口是 Git Bash
编辑2:仍然有这个问题,尝试了所有建议的解决方案,并从网络上尝试了不同的解决方案,但没有运气,任何人都可以帮助解决这个问题吗?
您可以使用 PHP 中内置的 shell_exec
函数。它将通过 shell 执行命令,并在发生错误时以字符串或 null 值的形式返回完整的输出。
您还需要从test.sh
文件中取出正在执行的脚本,并将其放入 PHP 函数中,并将其作为参数传递给shell_exec
函数。窗口不断打开的原因是,您在此处执行的操作实际上与双击计算机上的文件以打开它相同,您实际上是在告诉命令行在命令行窗口中打开此文件,然后运行其中的脚本。
语法
string shell_exec(string $cmd);
来源
http://php.net/manual/en/function.shell-exec.php