Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本在Apache中超时,但在cli中不超时_Php_Apache_Apache2 - Fatal编程技术网

PHP脚本在Apache中超时,但在cli中不超时

PHP脚本在Apache中超时,但在cli中不超时,php,apache,apache2,Php,Apache,Apache2,我有一个PHP脚本,大约需要30秒才能完成。当通过php cli运行它时,它会成功完成(回显确认并将相关结果保存在本地文件系统上的文件中)。如果我通过Apache运行同一个文件,它似乎超时了,大约30秒后,Firefox提供给我的不是预期的确认消息,而是下载一个空文件(其他浏览器对它的处理不同,但基本上,有些事情没有按计划进行)。未创建本应在文件系统上创建的文件 知道执行时间可能很长,我在脚本的开头设置了set\u time\u limit(400) 有关于如何调试这个的提示吗?是什么导致脚本在

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

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


有关于如何调试这个的提示吗?是什么导致脚本在Apache中超时,而不是在cli中超时?

PHP cli和通过Apache的PHP使用不同的PHP.ini文件。检查php.ini文件中的Apache版本,确认
max\u execution\u time
足够高,可以满足您的需要


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

php CLI和通过Apache的php使用不同的php.ini文件。检查php.ini文件中的Apache版本,确认
max\u execution\u time
足够高,可以满足您的需要


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

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

看一看


我认为除了cgi可以超时的php时间限制之外,还需要增加
FcgidIOTimeout 40

。 如果您在apache中使用mod_fcgid,您还需要增加在那里的时间

看一看


我认为您需要增加
FcgidIOTimeout 40

在阅读了这里的所有答案和评论之后,我相信您的脚本不会超时

我认为你的申请失败了。 apache进程在cli不支持的受限用户中运行

可能您正在将一个文件写入一个文件夹,但您无权访问(在apache用户下)

我还认为可能缺少php模块。 将cli php.ini与apache php.ini进行比较

启用错误日志记录:

error_log = /tmp/php_error.log
log_errors = 1
可能您正处于测试环境中,您还可以启用
显示\u错误
。 但在生产使用中,请始终关闭此选项

请参阅日志为什么php中止

您可以使用
su
命令从apache帐户中的cli运行php脚本。
这可用于检查权限。

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

我认为你的申请失败了。 apache进程在cli不支持的受限用户中运行

可能您正在将一个文件写入一个文件夹,但您无权访问(在apache用户下)

我还认为可能缺少php模块。 将cli php.ini与apache php.ini进行比较

启用错误日志记录:

error_log = /tmp/php_error.log
log_errors = 1
可能您正处于测试环境中,您还可以启用
显示\u错误
。 但在生产使用中,请始终关闭此选项

请参阅日志为什么php中止

您可以使用
su
命令从apache帐户中的cli运行php脚本。

这可用于检查权限。

您的宿主允许设置时间限制?当您从命令行运行脚本时,PHP从未强制执行限制。这是从命令行运行的PHP与作为(f)cgi或apache模块运行的PHP之间的(微小)区别之一。请参阅:您的服务器是否有权限写入您保存文件的特定位置。是的,我可以使用同一服务器上的其他脚本将文件写入该位置。设置时间限制是允许的,我将其设置为400,正如我在问题中提到的。php.ini中的max_execution_time设置为insane 2000,系统上只有1个php.ini文件。嘿,Salty,请给我们更新。您注意到新的答案了吗?您的宿主允许设置时间限制?当您从命令行运行脚本时,PHP从来没有强制执行限制。这是从命令行运行的PHP与作为(f)cgi或apache模块运行的PHP之间的(微小)区别之一。请参阅:您的服务器是否有权限写入您保存文件的特定位置。是的,我可以使用同一服务器上的其他脚本将文件写入该位置。设置时间限制是允许的,我将其设置为400,正如我在问题中提到的。php.ini中的max_execution_time设置为insane 2000,系统上只有1个php.ini文件。嘿,Salty,请给我们更新。您注意到新的答案了吗?系统上似乎只有一个php.ini。@SaltyNuts:请查看我更新的答案。如果找到了正确的php.ini文件,请编辑其
set_time_limit
指令,然后重新启动Web服务器,查看执行时间限制是否增加。根据您的指示,我已确认php.ini中的max_execution_time设置为2000。我假设您指的是最大执行时间而不是设置时间限制,因为设置时间限制是一个函数,而不是一个php.ini指令。系统上似乎只有一个php.ini。@SaltyNuts:请查看我更新的答案。如果找到了正确的php.ini文件,请编辑其
set_time_limit
指令,然后重新启动Web服务器,查看执行时间限制是否增加。根据您的指示,我已确认php.ini中的max_execution_time设置为2000。我假设你的意思是max_execution_time,而不是set_time_limit,因为set_time_limit是一个函数,而不是php.ini指令。我似乎没有使用mod_fcgid-在文件系统的任何地方都找不到它,在任何apache配置文件中都没有提到FcgidIOTimeout。也许你正在使用mod_php。您可以在phpinfo()中看到您的网关。服务器API:CGI/FastCGI和$\u服务器[“SERV