必须同步调整upload_max_filesize、post_max_size、memory_limit、max_execution_time和max_input_time并重启服务,否则上传仍会失败;phpMyAdmin显示2048KB是因配置未生效或post_max_size未同步设置。

直接改 upload_max_filesize 和 post_max_size 就能突破 2MB 限制,但必须同步调大、重启服务,且仅靠改这两项还不够——memory_limit、max_execution_time、max_input_time 也得一起配平,否则上传阶段就卡死或执行中途崩溃。
为什么改了 php.ini 还是显示“最大限制:2,048 KB”?
phpMyAdmin 页面上显示的大小限制,是它读取 post_max_size 后格式化出来的值;但如果你没重启 PHP(比如没重启 php-fpm 或 Apache/Nginx),页面仍用旧配置。更常见的是:只改了 upload_max_filesize 却漏掉 post_max_size,而后者必须 ≥ 前者,否则整个 POST 请求会被截断,连文件名都收不到——此时页面常静默刷新或报 “No data was received to import”。
-
upload_max_filesize = 64M(按需设,别盲目堆高) -
post_max_size = 64M(必须 ≥ upload_max_filesize) -
memory_limit = 512M(至少比 post_max_size 大,避免解析时 OOM) -
max_execution_time = 0或300(0 表示不限制,导入大文件建议设为 0) -
max_input_time = 300(控制接收上传数据的超时,大文件别用默认 60)
没有服务器权限时怎么绕过上传限制?
用 phpMyAdmin 的 $cfg['UploadDir'] 机制,把 SQL 文件先传到服务器本地目录,再让 phpMyAdmin 从本地读取——完全不走 HTTP 文件上传流程,也就彻底避开 upload_max_filesize 拦截。
- 在 phpMyAdmin 根目录新建一个文件夹,比如
upload - 编辑
config.inc.php,加入或修改:$cfg['UploadDir'] = 'upload'; - 用 FTP/SFTP 把 SQL 文件上传到
phpmyadmin/upload/目录下 - 登录 phpMyAdmin → 选库 → Import → 在 “网站服务器上载目录” 下拉框里选你的文件
注意:UploadDir 路径是相对于 phpMyAdmin 安装根目录的,不是 Web 根目录;且该目录需有 PHP 读取权限(不可写入更安全)。
立即学习“PHP免费学习笔记(深入)”;
导入中途失败或浏览器假死,可能卡在哪?
上传成功 ≠ 导入成功。上传只是把文件丢进临时区,后续解析、分句、执行才是重头戏,这时真正起作用的是 MySQL 的 max_allowed_packet 和 PHP 的内存/时间限制。
- MySQL 报错
Packets larger than max_allowed_packet are not allowed?去my.cnf改max_allowed_packet = 128M并重启mysqld - PHP 报错
Allowed memory size exhausted?确认memory_limit已生效(查phpinfo()页面),且大于你 SQL 文件解压后的内容体积 - 浏览器卡住不动,但
mysql进程 CPU/内存飙升?大概率是max_execution_time或request_terminate_timeout(PHP-FPM 场景)提前杀掉了请求
最稳的底线方案:放弃 phpMyAdmin,改用 mysql 命令行直导——mysql -u user -p database_name ,既无上传限制,也不受 PHP 脚本生命周期约束,只是需要 SSH 权限。



















