PHP脚本在Apache中超时但在cli中没有

时间:2011-07-29 13:09:37

标签: php apache apache2

我有一个PHP脚本,大约需要30秒才能完成。当通过php cli运行它时,它成功完成(回显确认并将相关结果保存在本地文件系统上的文件中)。如果我通过Apache运行相同的文件,它似乎超时或大约30秒左右,而不是预期的确认消息,Firefox提供我下载一个空文件(其他浏览器对待它不同,但基本上,一些东西没按计划去)。不会创建应该在文件系统上创建的文件。

知道执行时间可能很长,我在脚本的开头设置了set_time_limit(400)

有关如何调试此问题的任何提示?什么可能导致脚本在Apache中超时,但在cli中没有?

3 个答案:

答案 0 :(得分:1)

在阅读完所有答案和评论后,我相信您的脚本不会超时。

我认为你的申请崩溃了。 apache进程在限制用户中运行,你的cli没有。

也许您正在将文件写入文件夹,您无权访问(在apache用户下)。

我也有可能缺少php模块。 比较你cli php.ini和apache php.ini。

开启错误记录:

error_log = /tmp/php_error.log
log_errors = 1

也许您处于测试环境中,您也可以启用display_errors。 但是在生产使用中总是关闭它!

查看日志为什么php中止。

您可以使用su命令在apache-account中从cli运行php脚本。 这可以用来检查权利。

答案 1 :(得分:0)

PHP CLI和PHP通过Apache使用不同的php.ini文件。检查php.ini文件中的Apache版本,确认max_execution_time足够高,以满足您的需求。

您可以执行phpinfo()以获取当前使用的php.ini文件的位置。

答案 2 :(得分:0)

除了php时间限制外,cgi可以超时。 如果你在你的apache中使用mod_fcgid,你还需要增加时间。

查看manual

我认为您需要增加FcgidIOTimeout 40