nginx拦截大sql上传因client_max_body_size和php upload_max_filesize限制,需同步调高二者至512m并重启服务;php超时需增大max_execution_time、max_input_time和memory_limit;phpmyadmin导入不可靠,建议改用命令行mysql导入。

上传大 SQL 文件卡在 0% 或报 413 Request Entity Too Large
这是 Nginx 拦截了超限请求,不是宝塔或 MySQL 的问题。默认只允许 1MB 以内的请求体,而导出的 SQL 文件动辄几十 MB。
要改两个地方:client_max_body_size(Nginx)和 upload_max_filesize(PHP),缺一不可。
- 进入宝塔面板 → 网站 → 对应站点 → 配置文件,在
server块里加一行:client_max_body_size 512m;(建议设为 512m 或更高,别用0) - 进入 PHP 设置 → 上传限制 → 把
upload_max_filesize和post_max_size都调到512M(注意单位是大写 M) - 改完必须重启 Nginx 和 PHP,光重载配置不生效
导入中途断开、页面空白、提示“504 Gateway Time-out”
本质是 PHP 执行超时,尤其当 SQL 含大量 INSERT 或建表语句时,max_execution_time 默认 30 秒根本不够。
不能只调大这个值——还要同步放宽 max_input_time 和 memory_limit,否则会触发其他超限机制。
- 在 PHP 设置中,把
max_execution_time改为300(5 分钟)或更高;max_input_time至少同步设为300 -
memory_limit建议设为512M或1G,避免解析大 SQL 时内存耗尽 - 如果仍超时,说明不是 PHP 层问题,而是 MySQL 自身处理慢(比如没索引、锁表),这时该换命令行导入
用 phpMyAdmin 导入后数据不全、中文乱码、部分表缺失
宝塔内置的 phpMyAdmin 是轻量版,对大文件分片解析不稳定,且默认字符集可能和源 SQL 不一致。
它不会报错,但会静默跳过失败语句,导致你以为成功了,其实漏了一半。
- 检查 SQL 文件开头是否有
SET NAMES utf8mb4;或类似声明,没有就手动加上,否则中文入库就是问号 - 确认文件编码是 UTF-8 无 BOM,用 VS Code 或 Notepad++ 查看并转换,BOM 会导致首行执行失败
- 更可靠的做法:跳过 phpMyAdmin,用 SSH 执行
mysql -u root -p database_name
改完配置还是失败?重点查这三处
很多人改了 Nginx 和 PHP 就以为万事大吉,但宝塔的“网站”和“PHP”配置是两套独立服务,容易漏掉其中一项;另外 MySQL 本身也有包大小限制。
- 确认修改的是当前站点绑定的 PHP 版本,不是系统默认或其他站点的 PHP 设置
- 检查 MySQL 的
max_allowed_packet,用mysql -u root -p -e "SHOW VARIABLES LIKE 'max_allowed_packet';"查,建议设为256M(需改/etc/my.cnf并重启 MySQL) - 上传路径
/www/backup/目录权限要是755,用户组是www,否则 PHP 进程读不到文件
真正麻烦的从来不是改哪几行配置,而是每层限制都得对齐,而且改完必须对应服务全部重启——少一个,就卡在你看不见的地方。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











