phpmyadmin本身不限制上传大小,真正限制的是php的upload_max_filesize和post_max_size配置,且post_max_size必须≥upload_max_filesize;若仍失败,推荐用mysql命令行直接导入绕过上传限制。
phpmyadmin 本身不设上传大小限制,真正卡住你的是 php 的 upload_max_filesize 和 post_max_size —— 这两个值中较小的那个,就是你实际能传上去的上限。
为什么改了 phpMyAdmin 配置没用?
很多人去翻 config.inc.php,想改 $cfg['UploadDir'] 或加 $cfg['ExecTimeLimit'] = 0,但这些跟“上传失败”完全无关。$cfg['UploadDir'] 只是定义服务器上哪个目录用来放预上传的 SQL 文件(需手动 FTP 传进去),不是放宽 HTTP 上传限制;$cfg['ExecTimeLimit'] 控制的是导入执行阶段的超时,不是上传阶段。
常见错误现象包括:
- 点击“执行”后页面空白或直接刷新
- 提示“未选择文件”或“文件超过 upload_max_filesize 指令限制”
- PHP 错误日志里出现
POST Content-Length of XXX bytes exceeds the limit
必须同步调大的两个 PHP 配置项
upload_max_filesize 和 post_max_size 必须同时改,且 post_max_size ≥ upload_max_filesize,否则 POST 数据包在解析前就被截断,上传根本不会进入 PHP 处理流程。
实操建议:
- 比如要传 100MB 的 SQL 文件,至少设
upload_max_filesize = 128M、post_max_size = 128M - 别只改一个:只调大
upload_max_filesize而post_max_size还是 8M,照样失败 - 单位必须是
M(不是MB),写成128MB会被 PHP 当作 0 处理 - 改完必须重启 PHP-FPM 或 Apache/Nginx 服务,不是重载配置
哪些配置容易被忽略但影响导入成败
上传成功 ≠ 导入成功。大 SQL 文件执行时还可能卡在其他环节:
-
max_execution_time:默认 30 秒,导入中途超时会中断,建议设为600或0(不限制) -
memory_limit:SQL 解析和执行吃内存,128M对百 MB 级文件远远不够,建议512M起 -
max_input_time:控制接收 POST 数据的总时长,上传慢速网络下建议提到600 -
file_uploads:确认是On,某些环境(如部分宝塔模板)会关掉它
验证是否生效:访问 phpinfo.php 页面搜索这四项,看值是否已更新 —— 不要看 phpMyAdmin 界面右下角显示的“最大限制”,那个数值是硬编码的前端提示,不反映真实配置。
绕过上传限制最稳的方式
修改 PHP 配置虽有效,但涉及权限、重启、安全策略等变量。生产环境更推荐跳过上传流程:
- 把 SQL 文件用 FTP/SCP 传到服务器任意路径(如
/home/backup/large.sql) - 用命令行直连导入:
mysql -u root -p your_db_name - 若提示
mysql: command not found,用绝对路径:/www/server/mysql/bin/mysql -u root -p your_db_name - 注意 SQL 文件不能含
CREATE DATABASE或USE,否则可能错库;编码必须是 UTF-8 无 BOM
真正卡点不在 phpMyAdmin 界面,而在 PHP 的上传管道和 MySQL 的执行上下文 —— 把这两层拆开处理,问题就清晰了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











