尝试从PHP脚本执行.bat文件时,服务器无响应

时间:2011-07-08 23:11:14

标签: php batch-file

我的.bat文件位于与我的名为start.bat的php文件相同的文件夹中 我想在单击提交按钮时执行.bat文件。

我的php文件如下所示:

<?php
if(isset($_POST['submit']))
{
echo exec('start.bat');
echo "Done!";
} else {
// display the form
?>
<form action="index.php" method="post">
<input type="submit" name="submit" value="Start Server">
</form>
<?php
}
?>

当我点击按钮时,网页进入“等待服务器...”的永无止境的循环 它不会运行批处理文件。

是否存在某些内容,例如我需要设置的权限,以便批处理文件运行,或者我是否正在执行错误的代码?

感谢您提供快速帮助,因为我今天需要解决此问题!

2 个答案:

答案 0 :(得分:0)

删除echo之前的exec,它应该有效。

答案 1 :(得分:0)

首先,作为一种好的做法,您应该始终使用绝对路径而不是相对路径。系统可能在另一个地方寻找start.bat。您永远不会确定任何自动呼叫的相对位置。我可以告诉你一些搞砸了system32路径的热闹商店。

其次,exec()代表可执行文件。根据您的系统设置,bat文件可能无法识别为可执行文件。 .bat扩展名在DOS时间用于批处理文件。自Windows NT以来的Windows系统使用.cmd。

在Windows Web服务器中,打开命令提示符并键入

set PATHEXT

你应该看到.BAT。如果设置了这个,则.bat应该与exec()一起运行。

如果您没有看到.bat,并且作为另一个好习惯,您可以首先启动主机以获取cmd的bat文件。

exec('cmd /c c:\www\start.bat');

您也可以尝试使用system()而不是exec()。