用PHP运行控制台程序

用PHP运行控制台程序,php,webserver,Php,Webserver,我编写了一个简单的PHP代码来执行控制台程序: <?php $cmd = escapeshellcmd('progName.exe arg1 arg2 arg3'); exec($cmd); ?> 然后我编写了一个简单的控制台程序,将一个句子写入文本文件(writext.exe hello.txt)。使用相同的PHP脚本,我在浏览器上运行了它,它运行正常 我已经尝试增加服务器上的超时,但仍然有相同的错误。 什么可能导致此问题?当您使用exec函数(例如exec('dir'))在PH

我编写了一个简单的PHP代码来执行控制台程序:

<?php
$cmd = escapeshellcmd('progName.exe arg1 arg2 arg3');
exec($cmd);
?>
然后我编写了一个简单的控制台程序,将一个句子写入文本文件(
writext.exe hello.txt
)。使用相同的PHP脚本,我在浏览器上运行了它,它运行正常

我已经尝试增加服务器上的超时,但仍然有相同的错误。
什么可能导致此问题?

当您使用
exec
函数(例如
exec('dir')
)在PHP中执行程序时,PHP会等待程序结束或您将其发送到后台,PHP会直接返回(尤其是注释)

根据您发布的PHP源代码(
$cmd=escapeshellcmd('progName.exe arg1 arg2 arg3');
),该程序不是由PHP发送到后台的-因此剩下的是
progName.exe

  • …将自身或分支发送到后台(不太可能,但请查看
    progName.exe的源代码)

  • …正在等待输入(如果运行
    writext.exe hello.txt
    (而不是
    progName.exe
    ),会发生什么情况从控制台通过PHP?如何在控制台上通过PHP运行?看起来返回有问题,它只执行progName而不返回,progName看起来是什么样子?控制台应用程序是您开发的吗?您是否尝试附加调试器?@Wiggler Jtag:但是,如果我直接在控制台上运行
    progName.exe
    (在服务器上),它工作。
    progName.exe
    读取3个参数并生成2个文件:一个二进制文件和一个.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