直接修改XAMPP对应的php.ini并重启Apache是唯一可靠方式;Windows路径为C:\xampp\php\php.ini,macOS为/Applications/XAMPP/xamppfiles/etc/php.ini,需管理员权限编辑,改完必须手动Stop再Start Apache才生效。

直接改 php.ini 并重启 Apache 是唯一可靠方式;其他方法在 XAMPP 里要么无效,要么只适合临时调试。
改哪个 php.ini 文件才生效
XAMPP 只认一个 php.ini:Windows 下是 C:\xampp\php\php.ini,macOS 下是 /Applications/XAMPP/xamppfiles/etc/php.ini。不是控制面板里“PHP Settings”跳转的页面,也不是 php.ini-development 或 php.ini-production 这类备份文件。
- 用记事本、VS Code 等编辑器时,必须以管理员权限打开该文件,否则保存失败但无提示
- 打开后搜索
max_execution_time = 30,改成你需要的值,比如max_execution_time = 600(单位秒,别加s) - 改完别急着刷新网页——XAMPP 的 Apache 启动时只读一次这个文件,不重启等于没改
为什么改了还是报超时
最常见原因是配置没真正生效,或者被更高层机制拦截:
- 验证是否改对:建个
info.php放在htdocs下,内容为<?php phpinfo(); ?>,访问http://localhost/info.php,搜索max_execution_time,看 “Local Value” 和 “Master Value” 是否一致且为你设的数字 - 如果显示是
0但脚本仍被杀,可能是 Apache 自身的Timeout指令在干预(XAMPP 默认为 300 秒),而这个值无法通过常规方式修改 -
ini_set('max_execution_time', '600')必须放在脚本最开头,且php_admin_flag[disable_functions]不能禁用它(XAMPP 默认未禁用);但它只对当前请求有效,且无法绕过 Apache 层超时 -
set_time_limit(600)从调用位置重新计时,但如果 Apache 已走到自己的Timeout限值,PHP 层再延也无济于事
别只调 max_execution_time,三个参数要同步改
很多“超时”根本没走到执行阶段,而是卡在输入接收或内存耗尽:
立即学习“PHP免费学习笔记(深入)”;
-
max_input_time控制 PHP 解析 POST/GET/上传数据的最长时间,默认为-1(继承max_execution_time),但如果你手动设过它,就必须同步更新,否则大表单提交(如 phpMyAdmin 导出几十张表)可能在 30 秒就断连,错误常表现为 500 或空白页 -
memory_limit设太低(如默认128M),导入几百万行 SQL 会直接报Fatal error: Allowed memory size exhausted,建议设为512M或更高 -
post_max_size和upload_max_filesize也要一起调大(如都设为64M),注意post_max_size >= upload_max_filesize,否则 phpMyAdmin 导出页面这种巨量 POST 请求会静默失败
重启 Apache 必须手动停启,不能只点 Restart
在 XAMPP 控制面板中,单击 Restart 有时不重载配置,尤其当 Apache 处于异常状态时:
- 务必先点击
StopApache,等状态变为 “Stopped”,再点击Start - macOS 命令行用户可用
sudo /Applications/XAMPP/xamppfiles/xampp restartapache,但底层仍是停启逻辑 - 改完后建议写个简单测试脚本:
<?php echo ini_get('max_execution_time'); ?>,确认输出是你设的值
真正麻烦的从来不是改那行数字,而是 Apache 的 Timeout 隐藏在编译默认值里不可配,又没法通过 php.ini 绕过——这意味着即使你设了 max_execution_time = 0,脚本跑满 300 秒照样被杀。



















