我几个小时以来一直在墙上撞墙,我无法取得任何进展。
现在我已经把我的问题简化为简单(可能是?)的任务,尝试在localhost上运行PHP脚本来运行.bat程序。我正在使用WAMP。
这是我目前的PHP文件:
<?php system('cmd /c C:\Users\user\Desktop\open.bat'); ?>
这就是它的全部内容。我的.bat文件位于桌面上,包含:
notepad.exe C:\Users\user\Desktop\test.txt
然后我在桌面上有一个名为test.txt的简单文本文件。我可以从命令行运行.bat文件,它工作正常,但在PHP中没有任何内容。
这里还有很多其他线程在询问如何从PHP运行.bat(例如:How do you run a .bat file from PHP?),而且我已经尝试过几乎所有关于在线阅读的技术,并且没有工作。
前,我试过
exec('open.bat')
(同一目录中的.bat),shell_exec()
,改变文件,路径的位置,我真的不知道它是什么。我没有在安全模式下运行PHP。
也许我应该知道一些可以让它运行的配置?或者也许我错过了一些非常明显的东西......
答案 0 :(得分:1)
您可能没有看到记事本运行,因为它是一个交互式程序,而Web服务器(试图启动它)运行的用户会话与您所在的用户会话不同。在这种情况下,从命令行执行相同操作(例如使用php -f
)将起作用。
答案 1 :(得分:0)
您可以尝试使用start /b C:\Users\user\Desktop\open.bat
代替cmd
你也可能要逃避斜杠,如\\
而不是\
所以,我建议你试试:
<?php system('start /b C:\\Users\\user\\Desktop\\open.bat'); ?>
答案 2 :(得分:0)
试试这个......
<?php
$cmd = C:\Users\user\Desktop\open.bat;
function execInBackground($cmd) {
if (substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $cmd, "r"));
}
else {
exec($cmd . " > /dev/null &");
}
}
execInBackground($cmd);
?>