调整 request_terminate_timeout 防止脚本无限运行的核心在于修改 PHP-FPM 的配置文件,通常位于 php-fpm.conf 或池配置文件中。将该参数设置为合理的秒数(如 300 秒)可强制终止长时间运行的进程,避免资源占用;若设置为 0 则代表无限制,但需配合 max_execution_time 使用。修改后必须重启 PHP-FPM 服务才能生效,同时需注意该参数优先级高于 php.ini 中的 max_execution_time,两者需协调设置以防冲突导致 502 或 504 错误。在实际生产环境中,建议根据脚本实际耗时设定阈值,并同步调整 Nginx 的 fastcgi_read_timeout,确保链路超时设置一致,避免因层级超时不一致引发的网关错误。
宝塔面板如何设置 PHP 超时限制_调整 max_execution_time
必须同步修改 PHP 的 max_execution_time、max_input_time、memory_limit,PHP-FPM 的 request_terminate_timeout,Nginx 的 fastcgi_read_timeout 等四个超时参数并重启服务,否则仍会 504。max_execution_time 是 PHP 脚本能运行的最长时间,超时后进程会被强制终止——这不是警告,是直接 kill。宝塔里改它,必须同时动三处,只改一处大概率还是 504。改 php.ini 是基础,但不等于生效 这是全局设置,影响所有用该 PHP 版本的网站。别忘了 request_terminate_timeout 这个隐藏开关 PHP-FPM 自己还有个更底层的熔断机制,路径在/www/server/php/80/etc/php-fpm.conf(版本号按实际替换),找这一行:复制 AI 写代码 request_terminate_timeout = 300 它默认可能注释掉了,但一旦启用,会强杀所有超过该时间的请求,且**优先级高于 max_execution_time**。如果你已经调高了 max_execution_time 却还是被杀,八成是它在背后动手。(2026 年 3 月 24 日的资料)
Apache 怎么设置 PHP 脚本超时时间_调整最大执行时间的配置【方法】
PHP-FPM 环境下必须改 php-fpm.conf 或池配置 现在大多数生产环境用 PHP-FPM + Apache(通过 proxy_fcgi 模块),此时仅改 php.ini 还不够——FPM 自身也有超时控制,会提前 kill 掉“慢”进程。关键配置在 FPM 池文件 (如/etc/php-fpm.d/www.conf) 中:request_terminate_timeout:硬性超时,到点直接杀进程 (单位支持 s 或 m),例如 request_terminate_timeout = 120s request_slowlog_timeout:配合 slowlog 记录慢请求,不影响执行,仅用于诊断 注意:如果 request_terminate_timeout 小于 max_execution_time,PHP 脚本会在到达 PHP 层限制前就被 FPM 强制终止,错误日志里通常出现 WARNING: [pool www] child 12345 exited on signal 15 (SIGTERM) 验证是否生效:别只看 phpinfo() 页面 phpinfo() 显示的是当前请求加载的配置值,但它不反映 FPM 层的 request_terminate_timeout。真实超时行为需实测。
如何解决宝塔面板 PHP 请求执行超时问题_修改 max_execution_time 参数时间
为什么改了 max_execution_time 还是超时?PHP 层面只是其中一环。Nginx 和 PHP-FPM 同样有超时控制,三者不一致就会“表面改了却无效”。fastcgi_read_timeout 必须≥ PHP 的 max_execution_time,建议设为 300 或更高,在站点配置 → “配置文件”里搜这一项并修改 PHP-FPM 的 (在/www/server/php/{版本}/etc/php-fpm.d/www.conf 中) 也得同步调大,否则 FPM 进程自己先杀掉请求;设为 300s 或注释掉该行 (表示不限制) 若启用了宝塔的“防跨站攻击”,它会强制限制为 300 秒且不可调高,此时需关闭该功能或联系运维评估风险。PHP 脚本执行超时的典型表现 页面卡住、返回 502 Bad Gateway、Nginx 日志里出现 upstream timed out、PHP 错误日志中没有报错但请求中断——这些基本都是 max_execution_time 触发了强制终止。
PHP timeout 情况_php-fpm 超时时间设置 request_terminate_timeout 资源问题分析
本文详细探讨了 PHP-FPM 中的 request_terminate_timeout 和 php.ini 的 max_execution_time 设置对 PHP 脚本执行超时的影响。当 request_terminate_timeout 设置为 0 时,理论上不应有超时限制,但实际上可能仍受到 max_execution_time 的约束。实验表明,这两个参数共同决定了 PHP 脚本的执行时间限制。request_terminate_timeout 可能导致 file_get_contents 等函数在远程资源响应慢时无法超时,引发资源问题和 502 错误。作者建议在 request_terminate_timeout 中设定合理时间限制或使用 file_get_contents 的超时参数,以避免服务器性能问题。此外,request_terminate_timeout 设置过短可能导致多个用户同时遇到 503 错误,尤其是在网络环境不稳定的情况下。
php-fpm 超时,【linux 下 php 执行超时】PHP-max_execution_time 与 fpm.request_terminate_timeout 介绍
本文介绍下,php-fpm.conf 中的两个重要参考,它们分别是 max_children 和 request_terminate_timeout,有需要的朋友参考下吧。在使用 ffmpeg 转码时报错 timeout。首先,设置 PHP.ini 下的最大执行时间,效果不明显,遇到 60M 的视频依然报错。服务器以 nginx+php——fpm 方式运行 php,即 php—》php-fpm.conf–》nginx-》centos 的执行原理。centos 可以执行成功,nginx 只是开进程而已,关键在于:php-fpm.conf 文件的配置。这里规定了 PHP-CGI 的连接、发送和读取的时间,300 秒足够用了,因此我的服务器很少出现 504 Gateway Time-out 这个错误。最关键的是 php-fpm.conf 的设置,这个会直接导致 502 Bad Gateway 和 504 Gateway Time-out。
FAQ
request_terminate_timeout 设置为 0 是什么意思?
设置为 0 表示禁用该超时限制,允许 PHP 脚本无限期运行,但需注意可能导致的资源占用问题。
修改后需要重启服务吗?
是的,修改 php-fpm.conf 或池配置文件后,必须重启 PHP-FPM 服务才能生效。
它与 max_execution_time 有什么区别?
max_execution_time 是 PHP 层面的脚本执行时间限制,而 request_terminate_timeout 是 PHP-FPM 层面的进程强制终止时间,优先级更高。