必须通过phpinfo()确认实际加载的php.ini路径,再同步修改upload_max_filesize与post_max_size(单位为m),并重启apache;若仍失败,优先使用mysql命令行导入避开php限制。

直接改 php.ini 里的 upload_max_filesize 和 post_max_size,再重启 Apache——但很多人改了没用,是因为改错了文件或漏了关键细节。
怎么找到真正生效的 php.ini 文件
你改的 php.ini 很可能不是 Apache 实际加载的那个。XAMPP 控制面板里切换过 PHP 版本、或者装过多个 PHP 环境,都会导致路径错乱。
- 在浏览器打开
http://localhost/dashboard/phpinfo.php(或自己建个info.php,内容为<?php phpinfo(); ?>) - 搜索
Loaded Configuration File这一行,它会明确写出当前生效的完整路径,比如C:\xampp\php\php.ini - 如果显示的是
none或空白,说明 Apache 没加载到配置,要检查 XAMPP 是否启用了对应 PHP 版本 - Windows 下用记事本编辑时,务必用“管理员权限”运行,否则保存可能失败(尤其系统盘路径)
必须同步修改的两个核心参数
upload_max_filesize 和 post_max_size 是硬性配对,只改一个等于白改。它们单位必须带 M(如 128M),不能写 128MB 或数字加空格。
-
upload_max_filesize = 128M:单个文件上限,设为你目标 SQL 文件大小的 1.2 倍较稳妥 -
post_max_size = 128M:整个 POST 请求体上限,必须 ≥upload_max_filesize;若同时传多个文件或含大表单字段,建议设为更大(如256M) - 别忽略
max_execution_time = 600和memory_limit = 512M:大 SQL 导入常因超时或内存溢出中断,这两个值不调高,即使上传成功也会卡在执行阶段
为什么改完还是报“文件超出最大允许大小”
常见原因不是参数没生效,而是被其他层拦截了:
- Apache 本身没重启:仅点 MySQL 的“Restart”没用,必须点 Apache 的“Restart”,否则
php.ini加载不刷新 - phpMyAdmin 缓存了旧限制:浏览器访问
http://localhost/phpmyadmin/后,清一下本地缓存或换无痕窗口重试 - SQL 文件开头有 BOM 头或非法字符:某些导出工具会在文件头加 UTF-8 BOM,导致 phpMyAdmin 解析失败,报错却显示成“大小超限”——用 VS Code 或 Notepad++ 以 UTF-8 无 BOM 格式另存一次即可
- Windows 路径含中文或空格:如果 SQL 文件放在桌面或“我的文档”,路径解析可能异常,临时挪到
C:\temp\这类纯英文短路径下再试
比改 php.ini 更稳的导入方式:命令行 mysql
当 SQL 文件超过 100MB,或反复调试失败时,绕过 phpMyAdmin 是最快解法。它不经过 PHP 上传流程,自然不受 upload_max_filesize 限制。
- 确保 MySQL 服务已启动(XAMPP 控制面板中显示 “Running”)
- 打开 CMD 或 PowerShell,执行:
cd C:\xampp\mysql\bin - 运行导入命令:
mysql -u root -p --default-character-set=utf8mb4 mydb - 注意
--default-character-set=utf8mb4参数:缺了它,中文很可能变问号;是重定向符号,不能写成 <code>>或漏掉 - 如果提示
'mysql' 不是内部或外部命令,就把C:\xampp\mysql\bin加进系统PATH,或直接在该目录下运行命令
真正容易被忽略的点是:XAMPP 中 Apache 和 PHP 的耦合关系比想象中更紧,哪怕只动了一个参数,也得确认“哪个 php.ini”、“谁在读它”、“谁需要重启”。命令行导入看似绕路,实则是排除所有中间层干扰的最短路径。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











