post_max_size过小是phpMyAdmin上传失败的首要原因,需同时调大post_max_size、upload_max_filesize、Nginx的client_max_body_size及phpMyAdmin超时与内存限制,并重启相关服务验证生效。
phpMyAdmin 上传失败时,post_max_size 是第一排查项
phpmyadmin 导入数据库文件报错(如空白页、413、或提示“最大限制:2,048 kb”),post_max_size 过小是最常见原因。它不是单指文件大小,而是整个 post 请求体的总容量——包括表单字段、csrf token、文件内容等。只要总和超了,php 就直接丢弃整个 $_post 和 $_files,不报错也不提示,页面就静默失败。
-
post_max_size必须 ≥upload_max_filesize,否则即使文件本身没超,也会被拒绝 - 实际生效值取
post_max_size和upload_max_filesize中的较小者(phpMyAdmin 显示的“最大限制”就是这个较小值) - 修改后必须重启 PHP 解释器进程(不是仅刷新网页),否则无效
改 php.ini 是唯一可靠方式,ini_set() 对 post_max_size 完全无效
post_max_size 属于 PHP_INI_PERDIR 类型,解析 POST 数据前就已锁定。你在脚本里写 ini_set('post_max_size', '128M') 不起任何作用,连 warning 都不会触发。
- 先用
php --ini或phpinfo()页面确认正在加载的php.ini路径(例如/etc/php/8.2/apache2/php.ini或/www/server/php/82/etc/php.ini) - 编辑该文件,找到并修改两行:
post_max_size = 128M、upload_max_filesize = 64M(单位用M,不要用MB) - 确保
file_uploads = On,否则上传开关被关了,调再大也没用
Nginx 用户额外要设 client_max_body_size
如果 phpMyAdmin 部署在 Nginx 上,即使 PHP 层配置全对,Nginx 会在请求到达 PHP 前就拦截超大的 body,返回 413 Request Entity Too Large。
- 在 Nginx 配置中(通常是
http、server或location块内)加一行:client_max_body_size 128M; - 该值应 ≥
post_max_size,否则卡在 Web 服务器层 - 改完必须执行
sudo nginx -t && sudo systemctl reload nginx,语法错误会导致 reload 失败
phpMyAdmin 自身配置也要同步调整
PHP 层放开限制后,phpMyAdmin 的导入逻辑还可能因超时或内存不足中断。
- 在
phpmyadmin/config.inc.php中添加或修改:$cfg['ExecTimeLimit'] = 0;(禁用执行时间限制) - 同时检查
php.ini中的max_execution_time(建议 ≥ 600)、max_input_time(≥ 600)、memory_limit(≥ 256M) - 修改完所有配置后,务必分别重启 PHP-FPM(
systemctl restart php8.2-fpm)和 Web 服务(apache2或nginx)
phpinfo() 页面,确认 post_max_size 和 upload_max_filesize 的值已更新——这两个数字一旦不一致或未生效,后续所有操作都白忙。



















