0

几个小时以来,我一直在努力解决这个问题,但我无法取得任何进展。

现在,我已经将我的问题归结为简单的(也许?)任务,即尝试让 PHP 脚本在 localhost 上运行 .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 文件?),我已经尝试了几乎所有我在网上读到的技术,但没有任何效果。

例如,我试过了

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

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

4

3 回答 3

1

您可能看不到记事本运行,因为它是一个交互式程序,并且 Web 服务器(正在尝试启动它)在与您所在的用户会话不同的用户会话中运行。从命令行执行相同操作(例如php -f) 在这种情况下会起作用。

于 2012-12-22T19:15:11.067 回答
0

你可以尝试使用start /b C:\Users\user\Desktop\open.bat而不是cmd

你也可能不得不逃避斜线,就像这样\\而不是\

所以,我建议你试试:

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

于 2012-12-22T19:05:35.480 回答
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

于 2014-09-22T12:16:45.080 回答