【发布时间】:2016-05-14 04:50:06
【问题描述】:
您好,我正在尝试通过 PHP 执行 bash 脚本,当脚本运行时,shell 界面会出现几秒钟然后消失。
但是,我需要一种在不出现 shell 的情况下运行 bash 脚本的方法。在下面显示的 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:仍然有这个问题,尝试了所有建议的解决方案并尝试了网络上的不同解决方案,但没有运气,有人可以帮忙吗?
【问题讨论】:
-
我猜这是出现的 Cygwin 窗口。 Windows 本身不会对如何处理 shell 脚本有最微弱的想法……会吗? (基于
chdir('C:\xampp\htdocs\p-master\tools');我假设你正在运行Windows)你告诉 cmd 到start \B test.sh -
该窗口是 Git Bash,是的,我正在运行 Windows。
-
我不是 100% 对此,但我不确定 background 标志 (
/b) 是否真的在这里工作 - 这将确保cmd提示窗口不一定出现下面的 Bash 窗口。您可以尝试将start替换为sh.exe的路径并使用&标志,就像您对*nix 所做的那样......也许。 -
您好,感谢您尝试过,但恐怕没有运气!
-
这是指 Cygwin ...但它可能会提供一些帮助;恐怕我对 Windows 上的 Bash 有点不知所措;)stackoverflow.com/questions/673278/…