我有一个PHP脚本,大约需要30秒才能完成。当通过php cli运行它时,它成功完成(回显确认并将相关结果保存在本地文件系统上的文件中)。如果我通过Apache运行相同的文件,它似乎超时或大约30秒左右,而不是预期的确认消息,Firefox提供我下载一个空文件(其他浏览器对待它不同,但基本上,一些东西没按计划去)。不会创建应该在文件系统上创建的文件。
知道执行时间可能很长,我在脚本的开头设置了set_time_limit(400)
。
有关如何调试此问题的任何提示?什么可能导致脚本在Apache中超时,但在cli中没有?
答案 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)