必须修改phpinfo()确认的php.ini路径中的upload_max_filesize、post_max_size、memory_limit和max_execution_time四个参数并重启apache才有效,超100mb文件应优先使用mysql命令行导入。

改 php.ini 才有效,其他地方调都没用——XAMPP 的上传限制只认 php.ini 里那几行,而且必须重启 Apache。
怎么找到真正生效的 php.ini 文件
你改的 php.ini 很可能不是 Apache 实际加载的那个。XAMPP 控制面板右上角切换过 PHP 版本、或装过多版本 PHP,都会导致路径错乱。
- 新建一个
info.php,内容为<?php phpinfo(); ?>,放到C:\xampp\htdocs\下 - 浏览器访问
http://localhost/info.php,搜索Loaded Configuration File - 看到的路径才是你要编辑的文件,比如
C:\xampp\php\php.ini或C:\xampp\php\php-8.3.0\php.ini - Windows 下用记事本编辑时,务必以“管理员身份运行”,否则保存可能失败
- 别去改
php.ini-development或php.ini-production——它们只是模板,不生效
必须同步修改的四个核心参数
只改 upload_max_filesize 是最常见的无效操作。这四个值相互制约,漏一个就卡在不同环节:
-
upload_max_filesize = 256M:单个文件上限,单位必须是M(不是MB或小写m) -
post_max_size = 256M:整个 POST 请求体上限,必须 ≥upload_max_filesize;如果传多个文件,总大小不能超它 -
memory_limit = 512M:phpMyAdmin 导入时会把整个 SQL 文件读进内存解析,设太小会报Allowed memory size exhausted -
max_execution_time = 600:默认 30 秒根本不够执行百万行 SQL,设为 600(10 分钟)更稳妥;顺手也改max_input_time = 600
为什么改完还是报“文件超出最大允许大小”
错误提示没变,不代表参数没生效——可能是被其他层提前拦截了:
- Apache 没重启:只点 MySQL 的 Restart 没用,必须在 XAMPP 控制面板里对 Apache 点 “Stop” 再 “Start”
- phpMyAdmin 缓存旧限制:清浏览器缓存,或换无痕窗口重试
- SQL 文件带 BOM 头:用 VS Code 或 Notepad++ 以“UTF-8 无 BOM”格式另存一次
- 路径含中文或空格:临时把 SQL 文件挪到
C:\temp\这类纯英文短路径下再试 - 浏览器并发限制(如 Chrome 同域名最多 6 个连接):和 PHP 层
max_file_uploads无关,但会影响多文件上传体验
超过 100MB 就别硬扛 phpMyAdmin
即使所有参数全调高,phpMyAdmin 仍可能因内存碎片、HTTP 中断或浏览器超时失败。命令行导入不是“备选”,而是更稳的常规操作:
- 确保 MySQL 正在运行(XAMPP 面板中状态为 Running)
- 打开 CMD,执行:
cd C:\xampp\mysql\bin - 运行:
mysql -u root -p mydb (注意是 <code>,不是 <code>-或--) - 该方式完全绕过 PHP 上传和解析流程,不受
upload_max_filesize限制,也更快
真正容易被忽略的是:Loaded Configuration File 路径必须亲手确认,改错文件等于没改;而超过 100MB 的 SQL 文件,命令行导入应作为第一选择,不是最后手段。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











