批处理文件-不能让.bat在WAMP本地主机上与PHP一起运行


batch file - Can't get .bat to run with PHP on WAMP 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文件(例如:如何从PHP运行。bat文件?),我已经尝试了几乎所有我在网上读到的技术,没有任何工作。

Ex, I've try

exec('open.bat')(与。bat在同一目录下),shell_exec(),改变周围的文件位置,路径,我真的不知道是怎么回事。我没有在安全模式下运行PHP。

也许有一些配置,我应该知道,将允许它运行?或者我可能错过了一些明显的痛苦…

这是可能的,你没有看到记事本运行,因为它是一个交互式程序和web服务器(这是试图启动它)运行在一个不同的用户会话比一个在。在这种情况下,从命令行(例如使用php -f)执行相同的操作也可以。

您可以尝试使用start /b C:'Users'user'Desktop'open.bat代替cmd

你可能还需要转义斜杠,像''而不是'

所以,我建议你试试:

<?php system('start /b C:''Users''user''Desktop''open.bat'); ?>

试试这个....

<?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