唯一可靠方式是直接修改XAMPP安装目录下的php\php.ini(如C:\xampp\php\php.ini),以管理员权限编辑max_execution_time等参数后,必须停止并重新启动Apache服务才能生效,其他方法仅限临时调试且受Apache超时机制限制。

直接改 php.ini 并重启 Apache,是唯一可靠的方式;其他方法在 XAMPP 中要么无效,要么不推荐用于长期使用。
在哪找并修改 XAMPP 的 php.ini
XAMPP 自带的 PHP 配置文件路径固定:安装目录下的 php\php.ini(例如 C:\xampp\php\php.ini)。不要去 Apache 或控制面板里找“PHP 设置”——那只是快捷入口,最终还是要编辑这个文件。
- 用记事本、Notepad++ 或 VS Code 以管理员权限打开
php.ini,否则保存会失败 - 搜索
max_execution_time,你会看到默认行:max_execution_time = 30 - 改成你需要的秒数,比如导出大报表设为
max_execution_time = 600(10 分钟) - 别设成
0,XAMPP 默认跑 Web SAPI(Apache 模块),设0会导致脚本卡死无响应,且无法被正常终止
为什么改完必须重启 Apache?
XAMPP 的 Apache 是把 PHP 编译进模块加载的,php.ini 只在 Apache 启动时读取一次。改完不重启,phpinfo() 里看到的还是旧值。
- 在 XAMPP 控制面板中,先点
StopApache,再点Start—— 单击Restart有时不生效 - 重启后,建个测试脚本验证:
<?php echo ini_get('max_execution_time'); ?>,输出应和你设的一致 - 如果输出仍是 30,说明没改对文件(常见于改了
php.ini-development或php.ini-production备份文件)
ini_set() 和 set_time_limit() 在 XAMPP 里能用吗?
能用,但仅限调试,且有硬限制:
立即学习“PHP免费学习笔记(深入)”;
-
ini_set('max_execution_time', '600')必须放在脚本最开头,且只对当前请求有效;如果php_admin_flag[disable_functions]禁用了ini_set(XAMPP 默认未禁用),它就直接失效 -
set_time_limit(600)会从调用位置起重新计时,但多次调用可能被 Apache 的Timeout指令覆盖(XAMPP 默认是 300 秒) - 这两个函数都无法突破 Apache 自身的超时机制,而 XAMPP 的 Apache 配置里没有暴露
Timeout修改入口,所以它们本质是“打补丁”,不是正解
别漏掉 max_input_time 这个隐藏关卡
很多上传或 POST 大数据的脚本卡在“接收阶段”,不是执行超时,而是输入解析超时。XAMPP 的 php.ini 里默认 max_input_time = -1,它会继承 max_execution_time 的值——所以你改了后者,前者也跟着变。但如果你手动设过 max_input_time,就得同步改它,否则上传大文件时可能在 30 秒就断连,根本到不了脚本执行环节。
真正容易被忽略的是:XAMPP 的 Apache 模块不支持 .htaccess 里的 php_value max_execution_time,强行加了也没用,还可能引发 500 错误。所有配置,老老实实回 php.ini 改。



















