我的.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
}
?>
当我点击按钮时,网页进入“等待服务器...”的永无止境的循环 它不会运行批处理文件。
是否存在某些内容,例如我需要设置的权限,以便批处理文件运行,或者我是否正在执行错误的代码?
感谢您提供快速帮助,因为我今天需要解决此问题!
答案 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()。