phpMyAdmin导入大文件失败主因是PHP配置限制,需修改upload_max_filesize、post_max_size(≥前者)、max_execution_time和memory_limit,并重启Web服务验证生效。
phpMyAdmin 导入大文件失败的常见错误现象
上传超过 2mb 的 sql 文件时,页面直接跳转到空白页或显示 the uploaded file exceeds the upload_max_filesize directive in php.ini;也可能报 maximum execution time of 30 seconds exceeded 或 allowed memory size exhausted。这些不是 phpmyadmin 的限制,而是 php 底层配置在拦截。
必须修改的三个 php.ini 参数及其作用
phpMyAdmin 本身不控制上传大小或执行时间,它完全依赖 PHP 的运行时配置。关键三项是:
-
upload_max_filesize:控制 HTTP POST 上传的单个文件最大体积(注意:只管上传阶段,不管后续处理) -
post_max_size:必须 ≥upload_max_filesize,否则整个 POST 请求会被拒绝(哪怕文件没超,但表单数据+文件总和超了也会失败) -
max_execution_time和memory_limit:大 SQL 导入解析耗时长、内存占用高,这两个值太小会导致脚本中途终止
例如,导入 50MB SQL 文件,建议设为:upload_max_filesize = 128M、post_max_size = 128M、max_execution_time = 600、memory_limit = 512M。
改完 php.ini 后必须重启 Web 服务
很多人改完配置就去 phpMyAdmin 重试,结果还是失败——因为 PHP 配置不会热加载。具体操作取决于你的环境:
- Apache + mod_php:执行
sudo systemctl restart apache2(Debian/Ubuntu)或sudo systemctl restart httpd(CentOS/RHEL) - Nginx + PHP-FPM:要重启的是 PHP-FPM 进程,不是 Nginx,命令通常是
sudo systemctl restart php*-fpm(如php8.1-fpm),可通过php --ini确认当前生效的 php.ini 路径,再用php -m | grep fpm查版本 - 改完后务必访问
phpinfo()页面,搜索对应参数名,确认数值已更新,避免改错文件(比如改了 CLI 的 php.ini,但 Web 用的是另一个)
phpMyAdmin 自身的 import_settings.php 不能替代 php.ini 修改
有些用户看到 phpMyAdmin 设置里有 $cfg['UploadDir'] 或 $cfg['SaveDir'],以为能绕过上传限制——不能。这些只是指定服务器上预存 SQL 文件的目录路径,用于“从服务器本地读取”,前提是文件得先通过其他方式(如 scp、rsync 或 FTP)传到服务器上,且 PHP 进程有读权限。它不改变任何上传限制,也不影响 upload_max_filesize 的生效逻辑。
立即学习“PHP免费学习笔记(深入)”;
真正想无感上传大文件,php.ini 是唯一入口;漏掉 post_max_size 或忘记重启 PHP-FPM,90% 的“改了没用”问题都出在这两处。



















