

新闻资讯
技术学院修改max_execution_time需同步调整php.ini、Nginx的fastcgi_read_timeout及PHP-FPM的request_terminate_timeout三处配置,并重启服务,否则无效。
改 max_execution_time 不是“装完 PHP 就能直接调”的事,它受多个配置层级控制,改错地方根本不起作用。
max_execution_time 才算数这是唯一全局生效的位置。其他方式(比如 ini_set())可能被禁用,或只在当前脚本生效,且不能超过 php.ini 里设的上限。
php --ini(命令行)或 phpinfo();(Web 环境)确认你改的是**正在加载的那个 php.ini**,别改错文件max_execution_time = 30,改成你需要的秒数,比如
max_execution_time = 300
nginx 或 apache)或 PHP-FPM 进程,否则不生效0 表示不限制(不推荐生产环境用)特别是用 Nginx +
PHP-FPM 时,fastcgi_read_timeout 和 request_terminate_timeout 会硬性中断请求,比 max_execution_time 更早起效。
fastcgi_read_timeout 300;,这个值必须 ≥ 你设的
max_execution_time
www.conf 里检查:request_terminate_timeout = 300s(注意单位带
s),也要 ≥ max_execution_time
mod_php,主要看 php.ini;如果用了 php-fpm,同样要同步检查 FPM 配置set_time_limit() 和 ini_set() 的实际限制这两个函数只能在脚本运行中临时调整,但有硬性前提:它们无法突破 php.ini 中设定的上限,且前提是 safe_mode 关闭(PHP 5.4+ 已移除)、disable_functions 没禁用它们。
立即学习“PHP免费学习笔记(深入)”;
set_time_limit(300) 是从**调用时刻起**再续 300 秒,不是总时长重置ini_set('max_execution_time', '300') 效果等同于 set_time_limit(),且仅对当前请求有效php.ini 里设了 max_execution_time = 30,而你在脚本里 set_time_limit(600),最终仍会在 30 秒后被杀——因为 PHP 启动时已锁定最大允许值max_execution_time 要单独处理命令行执行 PHP 脚本(比如 php script.php)默认读取的是另一个 php.ini 文件(路径常为 /etc/php/*/cli/php.ini),和 Web 用的不是同一个。
php --ini 看 CLI 加载的是哪个 php.ini
max_execution_time,或者直接在命令中覆盖:php -d max_execution_time=300 script.php
set_time_limit(0) 通常更安全,因为没超时风险最常被忽略的是:你以为改了 php.ini 就完事,结果 Nginx 或 PHP-FPM 的超时配置比它还短,请求照样 30 秒断掉。三个地方(php.ini、Nginx fastcgi_read_timeout、PHP-FPM request_terminate_timeout)必须同时检查、协同调整。