在 Ubuntu 上,PHP‑FPM 的“超时时间”通常分为 请求执行超时 和 FPM 进程/连接相关超时 两类。下面按常见场景说明如何设置。
max_execution_time控制 单个 PHP 脚本 最长执行时间(秒)
max_execution_time = 30
修改后重启 PHP‑FPM:
sudo systemctl restart php-fpm
# 或(版本不同)
sudo systemctl restart php8.1-fpm
注意:
- CLI 模式不受此限制
- 如果有
set_time_limit(),会覆盖该值
request_terminate_timeout强烈推荐用这个,比 max_execution_time 更可靠(即使脚本忽略时间限制也能杀掉)
路径示例:
/etc/php/8.1/fpm/pool.d/www.conf
添加或修改:
request_terminate_timeout = 30s
重启:
sudo systemctl restart php8.1-fpm
✅ 这是 PHP‑FPM 层面的硬超时
request_slowlog_timeout(慢日志)不是超时杀进程,而是记录慢请求
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/slow.log
idle_timeout(进程空闲超时)控制空闲进程存活时间
pm = dynamic
pm.process_idle_timeout = 10s
即使 PHP 设了超时,Web 服务器也可能先断掉
fastcgi_read_timeout 60s;
proxy_read_timeout 60s;
修改后:
sudo nginx -t
sudo systemctl reload nginx
| 超时类型 | 配置文件 | 示例 |
|---|---|---|
| 脚本执行 | php.ini | max_execution_time |
| FPM 硬超时 | pool.conf | request_terminate_timeout |
| 慢日志 | pool.conf | request_slowlog_timeout |
| Web 服务 | nginx | fastcgi_read_timeout |
✅ 用 PHP‑FPM 的 request_terminate_timeout
✅ Web 服务器超时 ≥ PHP 超时
❌ 不要只依赖 max_execution_time
如果你能告诉我:
我可以给你一套精确配置示例。