413错误由nginx在请求入口拦截,非php或phpmyadmin所致;必须在对应location块(如/location /phpmyadmin { })中配置client_max_body_size,且需同步收紧php的upload_max_filesize和post_max_size(≤nginx值),并重载nginx与php-fpm。
413错误根本不是phpmyadmin或php报的,是nginx在请求刚进来时就拦下了——连php进程都没触达。
client_max_body_size没配或配错位置
Nginx默认只允许1MB请求体,大SQL文件一发就超。关键不是“要不要加”,而是“加在哪”:
- 如果phpMyAdmin走的是
/phpmyadmin路径,必须在对应的location /phpmyadmin { }块里写client_max_body_size,光在http或server块里设会被覆盖 - 常见错误:在
http块写了client_max_body_size 50m,但server块里又写了client_max_body_size 1m,后者生效 - 单位写
20M、20m都行,但别写20MB(Nginx不认)
PHP层限制没同步收紧
Nginx放行后,请求才到PHP。此时upload_max_filesize和post_max_size才起作用:
- 这两个值必须≤Nginx的
client_max_body_size,否则会出现“Nginx让进、PHP又拒”的现象 - 若Nginx设了
20m,PHP至少也要设upload_max_filesize = 20M和post_max_size = 20M - 注意:改的是phpMyAdmin实际运行的那个PHP配置——如果是PHP-FPM,要改对应pool的
php_admin_value,不是系统全局php.ini
上传卡死或静默失败其实是前端行为
phpMyAdmin用纯HTML表单上传,浏览器选中几百MB文件瞬间就会卡住或假死,这不是后端问题:
- 它不会分片、不显示进度、不处理超时,上传阶段失败全靠Nginx的
client_body_timeout控制(默认60秒) - 别指望
max_execution_time能撑住——它只管脚本执行时间,不管上传耗时 - 真正可靠的大文件导入方式是命令行:
mysql -u user -p database
最容易被忽略的一点:改完Nginx配置后必须nginx -t && nginx -s reload,光改文件不重载等于没改;而PHP-FPM配置改完,也得systemctl reload php-fpm或等效操作——缺一不可。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











