我编写了一个简单的PHP代码来执行控制台程序:
<?php
$cmd = escapeshellcmd('progName.exe arg1 arg2 arg3');
exec($cmd);
?>
如果我直接在服务器上运行控制台上的命令,它就可以运行。但是,当我在浏览器上运行PHP时,它不起作用。进程progName.exe
正在运行(使用服务器上的任务管理器进行检查),但它永远不会完成。该程序应该从参数计算一些参数并将结果写入二进制文件,并生成.WAV文件。以下是我在浏览器上收到的错误消息:
Error Summary
HTTP Error 500.0 - Internal Server Error
C:\php\php-cgi.exe - The FastCGI process exceeded configured activity timeout
Detailed Error Information
Module FastCgiModule
Notification ExecuteRequestHandler
Handler PHP
Error Code 0x80070102
然后我编写了一个简单的控制台程序,将句子写入文本文件(writeTxt.exe hello.txt
)。使用相同的PHP脚本,我在浏览器上运行它,它可以工作。
我已经尝试增加服务器上的超时,但仍然有相同的错误。 什么可能导致这个问题?
答案 0 :(得分:0)
当您使用exec
函数(例如exec('dir')
)在PHP中执行程序时,PHP等待它结束或您将它发送到后台并且PHP来了直接回复(see documentation,特别是评论)。
根据您发布的PHP源代码($cmd = escapeshellcmd('progName.exe arg1 arg2 arg3');
),PHP不会将程序发送到后台 - 所以保留的是progName.exe
...
progName.exe
的来源)正如我所说,我敢打赌这是第二种选择。希望有所帮助。