直接改php.ini并重启Apache是唯一可靠方式;XAMPP仅认指定路径的php.ini,需用phpinfo()验证生效,且须同步调整max_input_time和memory_limit,并注意Apache自身Timeout限制。

直接改 php.ini 并重启 Apache,是唯一可靠方式;其他方法在 XAMPP 里要么无效,要么只适合临时调试。
为什么改了 max_execution_time 还报超时?
最常见原因是改错了文件。XAMPP 的 PHP 配置只认 C:\xampp\php\php.ini(Windows)或 /Applications/XAMPP/xamppfiles/etc/php.ini(macOS),不是控制面板里点开的“PHP Settings”跳转页,也不是 php.ini-development 或 php.ini-production 这类备份文件。
验证是否改对:建个 info.php 放在 htdocs 下,内容为 <?php phpinfo(); ?>,访问 http://localhost/info.php,搜索 max_execution_time,看显示值是否是你设的数字。如果不是,说明配置没生效。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 用记事本、VS Code 等编辑器时,必须以管理员权限打开
php.ini,否则保存失败但无提示 - 修改后必须先在 XAMPP 控制面板中点击
Stop再点Start—— 单击Restart有时不重载配置 - 如果
phpinfo()显示max_execution_time是 0,但脚本仍被杀,可能是 Apache 自身的Timeout指令在干预(XAMPP 默认为 300 秒),而这个值无法通过常规方式修改
ini_set() 和 set_time_limit() 能不能救急?
能,但有硬限制,且只对当前请求有效。它们不是配置项的替代方案,而是补丁。
-
ini_set('max_execution_time', '600')必须放在脚本最开头,且php_admin_flag[disable_functions]不能禁用它(XAMPP 默认未禁用) -
set_time_limit(600)从调用位置重新计时,但如果 Apache 已经走到自己的Timeout限值(默认 300 秒),PHP 层面再怎么延也无济于事 - 这两个函数在 CLI 模式下更自由,在 Web SAPI(Apache 模块)下始终受 Apache 守护进程制约
- 设
set_time_limit(0)或ini_set('max_execution_time', '0')在 Web 环境下风险高:脚本卡死会导致 Apache worker 占用不释放,后续请求排队甚至 503
别只盯着 max_execution_time,max_input_time 和 memory_limit 同样关键
很多“超时”实际卡在输入解析或内存耗尽,根本没走到执行阶段。
- 上传大 SQL 文件或提交复杂导出表单时,如果
max_input_time太小(比如还是默认 -1 但被继承为 30),会在接收 POST 数据时就断连,错误表现常为 500 或空白页 -
memory_limit设太低(如默认 128M),phpMyAdmin 导出/导入几百万行 SQL 会直接Fatal error: Allowed memory size exhausted - 同步调整这三项才完整:
max_execution_time = 600、max_input_time = 600、memory_limit = 512M - 改完仍失败?说明已触及 phpMyAdmin 架构瓶颈——它把整个 SQL 加载进内存再执行,此时应放弃 Web 界面,改用命令行:
mysql -u root -p database_name < dump.sql
真正容易被忽略的是:XAMPP 的 Apache 是模块化加载 PHP 的,php.ini 只在启动时读取一次,任何运行时修改都只是局部覆盖,且随时可能被更高层(Apache)截断。所以别省那几十秒的重启时间,也别迷信“加一行代码就能解决”。

















