phpMyAdmin导入超时非bug而是三层限制叠加:PHP上传限制、自身$cfg['ExecTimeLimit'](默认300秒,需设为0)、MySQL max_allowed_packet(默认4MB),三者须同步调整,缺一不可。
phpMyAdmin自身ExecTimeLimit必须单独设为0
phpmyadmin用的是自己实现的计时逻辑,$cfg['exectimelimit']默认300秒,它在导入过程中每秒轮询一次,超时就主动弹窗报错——哪怕你把max_execution_time调到3600,它照样在第301秒中断。这个值不读php配置,只认自己的配置文件。
操作路径:找到实际生效的config.inc.php(不是config.default.php),在$cfg['blowfish_secret']后面加一行:
$cfg['ExecTimeLimit'] = 0;
注意:0表示禁用,不是留空或写999999;改完不用重启Apache,但必须清浏览器缓存或换无痕窗口重进phpMyAdmin才生效。
PHP的max_execution_time和post_max_size必须同步调高
很多人只改upload_max_filesize,却忽略了post_max_size——它必须≥前者,否则Web服务器在接收POST体时就截断了,phpMyAdmin根本收不到完整SQL文件。
upload_max_filesize = 2048Mpost_max_size = 2048Mmax_execution_time = 3600memory_limit = 1024M
关键点:确认你改的是Web SAPI对应的php.ini,访问phpinfo()页面查“Loaded Configuration File”路径;改完必须重启PHP-FPM或Apache,否则无效。
立即学习“PHP免费学习笔记(深入)”;
MySQL的max_allowed_packet经常被忽略
WordPress导出的SQL常含单条几MB甚至几十MB的INSERT语句,而MySQL默认max_allowed_packet = 4M,超过就静默丢包——页面卡住、白屏、或报错但不提示真实原因。
临时生效(本次会话):
SET GLOBAL max_allowed_packet = 268435456;
永久生效:编辑MySQL配置文件(Windows是my.ini,Linux/macOS是my.cnf),在[mysqld]下加:
max_allowed_packet = 256M
然后重启MySQL服务。注意:SET GLOBAL需要SUPER权限,且对已存在的连接无效,必须重启或新建连接才生效。
Web服务器网关超时(如Nginx 504)要单独处理
PHP脚本可能跑完了,但Nginx/Apache等网关层等不到响应就主动断开,报504 Gateway Timeout。这跟PHP配置无关,得调网关参数。
Nginx用户检查location ~ \.php$块里是否有fastcgi_read_timeout,至少设为比max_execution_time大10–20秒;Apache用户查Timeout指令,默认常为60秒,需同步调高。Cloudflare免费版有100秒硬限制,无法绕过,只能直连或升级。
真正的大文件(>200MB)别强撑phpMyAdmin,直接用mysql -u root -p 数据库名 更稳——它跳过了所有Web层限制,失败也不会丢进度。



















