无法在WAMP localhost上使用PHP运行.bat

时间:2012-12-22 07:26:16

标签: php batch-file exec

我几个小时以来一直在墙上撞墙,我无法取得任何进展。

现在我已经把我的问题简化为简单(可能是?)的任务,尝试在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。

也许我应该知道一些可以让它运行的配置?或者也许我错过了一些非常明显的东西......

3 个答案:

答案 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);
?>

有关详情,请参阅:http://php.net/manual/en/function.exec.php