phpMyAdmin本身不限制上传,真正限制来自PHP的upload_max_filesize和post_max_size配置,二者取较小值即为实际上传上限,且必须修改Web SAPI对应的php.ini并重启服务。
phpmyadmin 本身不设上传限制,真正卡住你的是 php 的 upload_max_filesize 和 post_max_size ——改错地方或只改一个,文件照样传不上去。
为什么改了 phpMyAdmin 配置没用?
很多人去改 config.inc.php 里的 $cfg['UploadDir'] 或 $cfg['ExecTimeLimit'],这些不影响上传环节。上传走的是 PHP 表单提交流程,phpMyAdmin 只是把文件丢给 PHP 处理,限制全在 PHP 运行时配置里。
-
upload_max_filesize控制单个文件最大体积(比如64M) -
post_max_size控制整个 POST 请求体上限,必须 ≥upload_max_filesize(比如设成128M),否则哪怕文件没超,POST 数据也会被截断 - 这两个值中较小的那个,就是你实际能传上去的天花板
怎么找到并修改正确的 php.ini?
别凭感觉改 /etc/php/8.1/cli/php.ini——CLI 版本对网页无效。phpMyAdmin 走的是 Web SAPI(Apache 或 PHP-FPM),必须改它用的那个。
- 在 phpMyAdmin 根目录新建
info.php,内容为<?php phpinfo(); ?> - 浏览器访问
http://your-domain/info.php,搜索Loaded Configuration File,看到的路径才是真正在用的php.ini - 打开该文件,定位并修改以下三项(单位是
M,不是MB):upload_max_filesize = 256Mpost_max_size = 256Mmemory_limit = 512M - 改完必须重启服务:
sudo systemctl restart php8.1-fpm(PHP-FPM)或sudo systemctl restart apache2(Apache)
上传成功后还失败?可能是执行阶段卡住了
即使文件顺利上传,phpMyAdmin 会把它读进内存再逐条执行 SQL。含百万级 INSERT 的单文件很容易触发超时或内存溢出。
-
max_execution_time = 600(单位秒),默认 30 秒远远不够 -
max_input_time = 600,大文件解析阶段也需要更长时间 - phpMyAdmin 自身的
$cfg['ExecTimeLimit'] = 0(写在config.inc.php中)可禁用其内部计时,但无法绕过 PHP 的max_execution_time - 导入 >50MB 的 SQL 文件时,建议直接跳过 phpMyAdmin,用命令行:
mysql -u root -p database_name < /path/to/file.sql
最常被忽略的一点:改完配置后没重启服务,或者改了错误的 php.ini;还有人以为调大 upload_max_filesize 就够了,却忘了 post_max_size 必须同步放大且不低于前者。
立即学习“PHP免费学习笔记(深入)”;



















