phpinfo() 显示的是当前 Web 环境下生效的 max_execution_time 值,分 Local Value(运行时可能被 ini_set 修改)和 Master Value(php.ini 原始值),但无法反映 set_time_limit(0) 等运行时重置行为,且 CLI 与 Web 配置独立,需分别检查。

可以,但 phpinfo() 显示的是当前生效的 max_execution_time 值,不是“能查到的最大可能值”,也不反映运行时是否被动态修改过。
phpinfo() 里怎么找 max_execution_time
直接在浏览器打开 phpinfo() 页面后,用 Ctrl+F 搜索 max_execution_time。它会出现在 “Core” 配置区,显示三列:
-
Local Value:当前脚本实际生效的值(可能被ini_set()改过) -
Master Value:php.ini 中原始配置的值 - 如果两列不一致,说明代码里调过
ini_set('max_execution_time', ...)
为什么 phpinfo() 显示的值有时和预期不符
常见干扰因素:
-
max_execution_time在 CLI 模式下默认为0(不限制),但phpinfo()通常在 Web 环境下运行,显示的是 FPM/Apache 的配置 - 某些 SaaS 或共享主机禁用
ini_set(),即使代码写了也无效,Local Value仍等于Master Value - 使用
set_time_limit(0)会在运行时重置计时器并解除限制,但phpinfo()不会体现这个“运行中状态”
更可靠的检测方式:用代码实测
仅靠 phpinfo() 无法确认“脚本真能跑满 X 秒”,必须触发执行并观察中断行为。例如:
立即学习“PHP免费学习笔记(深入)”;
ini_set('max_execution_time', 5);
$start = time();
while (time() - $start < 10) {
usleep(10000); // 每 10ms 检查一次,避免 CPU 占满
}
echo "没超时,继续执行了";如果页面报错 Fatal error: Maximum execution time of 5 seconds exceeded,说明限制真实生效;如果输出了那行文字,说明被绕过或设成了 0。
注意 CLI 和 Web 环境的配置是分开的
你在浏览器里看 phpinfo() 得到的 max_execution_time,和终端执行 php -i | grep max_execution_time 输出的很可能不同。很多框架(如 Laravel)的队列、命令行任务走 CLI,这时候得单独查 CLI 的 php.ini 路径:
php --ini
然后打开对应 php.ini 文件确认 max_execution_time 设置——这里最容易漏掉。











