我有一个PHP脚本,它使用passthru()函数执行批处理(.bat)文件。批处理文件的输出通过echo语句打印。
这个PHP脚本在Apache Web服务器上托管时工作得非常好,但是当在IIS 7.5上托管时,相同的PHP脚本会在每次备用调用时产生500.0错误
我做了一些研究,发现如果PHP脚本需要很长时间才能执行,浏览器就会没有响应。
因此,我编辑了PHP脚本以写入“执行批处理文件之前”和“执行批处理文件之后”之类的文件。
由于显示500.0错误,文件仍然按上述行更新。这得出结论,虽然脚本正在执行,但浏览器显示500.0
是否有可以在IIS中调整的设置? 仅IIS 7.5发生此问题。当我使用Apache时,它就像一个魅力。
答案 0 :(得分:1)
我和你有完全相同的问题;通过exec(),shell_exec()等执行批处理文件,每次刷新页面时都会导致内部500服务器错误。
我通过从批处理文件中删除所有PAUSE命令来解决此问题。
确保您在批处理文件的流程中没有任何中断。也就是说,如果在执行批处理脚本期间的任何时候需要用户输入,那么php将挂起并且服务器将超时。
希望这有帮助!
(我发表评论,但我没有50个声誉)