phpMyAdmin本身不限制上传,真正限制来自PHP的upload_max_filesize和post_max_size,二者取较小值即为实际上传上限,必须同步修改Web SAPI对应的php.ini并重启服务。

phpMyAdmin 本身不设上传大小限制,真正起作用的是 PHP 的 upload_max_filesize 和 post_max_size ——改错配置或只改一个,文件照样传不上去。
为什么改了 config.inc.php 没用?
很多人去改 $cfg['UploadDir'] 或 $cfg['MaxImportFileSize'],这些只是控制“从服务器目录选文件”的路径或前端提示,并不干预 HTTP 文件上传流程。上传阶段完全由 PHP 处理,phpMyAdmin 只是把表单提交丢给 PHP,限制全在 PHP 运行时配置里。
-
$cfg['MaxImportFileSize'](单位字节)仅影响导入页面的提示文案和前端校验,后端仍受 PHP 配置拦截 -
$cfg['ExecTimeLimit'] = 0可禁用 phpMyAdmin 内部执行计时,但无法绕过 PHP 的max_execution_time - 修改
import.php里的$memory_limit变量是无效的:PHP 已在解析前就拒绝了超限 POST 请求
必须同步修改的两个 PHP 配置项
这两个值中较小的那个,就是你实际能传上去的天花板。只调大 upload_max_filesize 而忽略 post_max_size,上传必然失败。
-
upload_max_filesize = 256M:单个上传文件最大体积(注意单位是M,不是MB) -
post_max_size = 256M:整个 POST 请求体上限,必须 ≥upload_max_filesize - 顺手调高
memory_limit = 512M和max_input_time = 600,避免解析大 SQL 时内存溢出或超时中断
怎么找到并修改正确的 php.ini?
系统常有多个 php.ini(CLI 版、Apache 版、FPM 版),而 phpMyAdmin 走的是 Web SAPI(通常是 Apache 或 PHP-FPM),必须改对那个。
立即学习“PHP免费学习笔记(深入)”;
- 在 phpMyAdmin 根目录新建
info.php,内容为<?php phpinfo(); ?> - 浏览器访问该文件,搜索
Loaded Configuration File,看到的路径才是真正在用的php.ini - 别碰
/etc/php/8.1/cli/php.ini——CLI 配置对网页无效 - 改完必须重启服务:
sudo systemctl restart php8.1-fpm(PHP-FPM)或sudo systemctl restart apache2(Apache)
50MB 以上文件别硬扛,直接用命令行导入
即使上传成功,phpMyAdmin 会把整个 SQL 文件读进内存再逐条执行,含百万级 INSERT 的单文件极易触发超时或 OOM。生产环境建议跳过上传环节:
- 先用 FTP 或宝塔文件管理器把 SQL 文件上传到服务器(如
/www/backup/large.sql) - 确认 MySQL 服务运行中,且 SQL 文件不含
CREATE DATABASE或USE语句 - 执行:
mysql -u root -p your_database_name < /www/backup/large.sql - 如果提示
mysql: command not found,用完整路径:/www/server/mysql/bin/mysql -u root -p your_database_name < /www/backup/large.sql
最常被忽略的一点:改完配置后没重启服务,或者改了错误的 php.ini;还有人以为调大 upload_max_filesize 就够了,却忘了 post_max_size 必须同步放大且不低于前者。



















