根本原因是PHP配置未正确修改或服务未重启:需修改FPM版php.ini中upload_max_filesize和post_max_size(且post_max_size≥upload_max_filesize),并重启PHP-FPM;同时phpMyAdmin需配置UploadDir/saveDir目录及权限,大文件应改用命令行导入。

根本原因不是 phpMyAdmin 本身限制,而是它背后 PHP 的 upload_max_filesize 和 post_max_size 没调大——改错地方或没重启服务,90% 的“文件过大”都白调了。
为什么改了 php.ini 还报“文件过大”
常见错误现象是:在宝塔面板里改完 upload_max_filesize 和 post_max_size,保存、点“重启PHP”,但上传时仍卡在 2MB 或 8MB。这是因为:
- 你改的可能是 CLI 版本的
php.ini(比如/etc/php/8.1/cli/php.ini),而网页请求走的是 FPM 模式,真正生效的是/www/server/php/{版本号}/etc/php.ini - 改完没重启 PHP-FPM 服务,只点了“重载配置”,但
upload_max_filesize这类参数必须重启进程才加载 -
post_max_size小于upload_max_filesize,哪怕设了 512M,只要post_max_size = 8M,整个 POST 请求就被 Nginx 或 PHP 截断了
验证是否生效:建个 info.php(内容为 <?php phpinfo(); ?>),访问后搜索 “upload_max_filesize”,看值是不是你设的,且 “Loaded Configuration File” 路径对得上。
phpMyAdmin 自身还有两道独立关卡
即使 PHP 层放行了,phpMyAdmin 前端仍可能拦你,尤其宝塔内置版本(如 4.9.x)默认不启用服务器上传目录:
立即学习“PHP免费学习笔记(深入)”;
- 必须在
/www/server/phpmyadmin/config.inc.php末尾加这三行:$cfg['UploadDir'] = 'upload';、$cfg['SaveDir'] = 'save';、$cfg['LimitChars'] = 1000000; - 要在
/www/server/phpmyadmin/下手动新建upload目录,并设权限755,否则“从服务器上传目录导入”选项不会出现 - 别信网上抄来的
ini_set('upload_max_filesize', ...)—— 这在 phpMyAdmin 的上下文里根本不起作用,PHP 配置已由 FPM 加载完毕
加完配置、建好目录后,刷新 phpMyAdmin 页面,左下角应出现“从服务器上传目录导入”按钮;没出现,说明配置没生效或路径/权限错了。
命令行导入才是真·绕过所有限制
50MB 以上就别死磕界面了。浏览器上传本质是把整个 SQL 文件读进内存再发 POST,遇到 GB 级文件,max_execution_time、内存溢出、Nginx client_max_body_size 全都会爆。直接用 MySQL 客户端导入:
- 先确认 MySQL 服务在运行(宝塔首页看状态),SQL 文件已上传到服务器,比如
/www/backup/db.sql - 执行:
/www/server/mysql/bin/mysql -u root -p --default-character-set=utf8mb4 your_db_name < /www/backup/db.sql - 如果报
ERROR 2006 (HY000): MySQL server has gone away,大概率是max_allowed_packet太小,先连上去执行:SET GLOBAL max_allowed_packet = 1073741824; - 导入过程无进度条,别手抖 Ctrl+C;中途断开 SSH 不影响,但别 kill mysql 进程
真正容易被忽略的是字符集——哪怕你设了 --default-character-set=utf8mb4,如果 SQL 文件头没带 SET NAMES utf8mb4,或者建表语句里字段没显式声明 CHARACTER SET utf8mb4,中文照样变问号。



















