You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP脚本运行180秒后抛出404错误的原因排查求助

解决PHP长脚本运行3分钟后出现404无响应的问题

我来帮你梳理下可能的原因和对应的解决办法,你遇到的情况虽然调大了PHP的执行时间,但还有不少其他环节会影响长脚本的运行:

1. 检查Web服务器的超时设置

PHP的max_execution_time只是控制脚本本身的运行时间,但Web服务器(比如Apache或Nginx)也有自己的连接超时限制,一旦超过这个时间,服务器会主动断开连接,可能返回404或其他错误:

  • Apache:找到配置文件里的Timeout指令,默认可能是300秒(5分钟),如果你的脚本要跑更久,把它改成6000(和PHP的设置对应),然后重启Apache。
  • Nginx:如果用FastCGI运行PHP,需要调整fastcgi_read_timeout;如果是反向代理,调整proxy_read_timeout,把值设为6000s,重启Nginx生效。

2. 解决echo无法即时显示的问题

默认PHP会开启输出缓冲,只有缓冲区满或者脚本结束才会把内容发送给浏览器,这会让你误以为脚本没在运行。你可以在脚本开头添加:

ob_implicit_flush(true); // 自动刷新输出缓冲区
ini_set('output_buffering', 0); // 关闭输出缓冲

之后每次echo内容后,也可以配合flush(); ob_flush();来确保内容即时发送到浏览器,这样就能实时看到脚本的运行状态了。

3. 排查反向代理/CDN的超时限制

如果你的网站使用了Cloudflare、阿里云CDN这类服务,或者有反向代理服务器,它们通常也有自己的超时阈值(比如Cloudflare默认是100秒),超过后会直接返回错误。你需要登录对应的服务控制台,找到超时设置并调整到足够大的值(比如6000秒)。

4. 用命令行工具排除浏览器因素

浏览器本身可能也有隐性的超时机制,你可以用curl命令行来测试脚本,看是否能正常完成:

curl -v http://your-domain.com/your-script.php

观察命令行的输出,如果脚本能正常运行到结束,说明问题出在浏览器或前端环节;如果还是出现中断,那问题大概率在服务器或PHP配置上。

5. 开启PHP错误日志排查隐性错误

虽然你看到脚本在更新文件,但可能在某个环节出现了未被捕获的致命错误,导致脚本异常终止,服务器返回404。你可以开启PHP的错误日志来排查:
在php.ini中设置:

log_errors = On
error_log = /var/log/php-errors.log
display_errors = Off

然后运行脚本,查看日志文件,看是否有错误信息提示脚本终止的原因。

内容的提问来源于stack exchange,提问作者Graham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:32:39