post_max_size必须严格大于upload_max_filesize,否则上传失败;推荐前者比后者大10M~20M,单位统一为M,修改后需重启Apache,并通过phpinfo()确认“Loaded Configuration File”路径及参数值生效。

post_max_size 和 upload_max_filesize 必须配对改
单独调大 post_max_size 没用,因为 PHP 上传流程中,upload_max_filesize 控制单个文件上限,而 post_max_size 是整个 POST 请求体的总容量(含所有字段、文件、表单数据)。如果 post_max_size ≤ upload_max_filesize,哪怕文件本身没超,也会被直接拒绝——错误通常不提示具体原因,只显示“上传失败”或空白页。
实操建议:
-
post_max_size必须严格大于upload_max_filesize,推荐设为后者 +10M~20M(例如upload_max_filesize = 128M→post_max_size = 144M) - 两个值单位必须一致(都用
M,别混用MB或数字加B) - 修改后仅重启 Apache 生效,重启 MySQL 或 phpMyAdmin 页面本身无效
php.ini 文件位置容易找错
XAMPP 安装目录下有多个 php.ini:常见的是 php\php.ini-development 和 php\php.ini-production,但 Apache 实际加载的是去掉后缀的那个 php.ini(即纯名字为 php.ini 的文件)。用错文件会导致改了等于没改。
验证是否改对的方法:
- 新建一个
info.php,内容为<?php phpinfo(); ?>,放在htdocs下访问 - 搜索页面里的 “Loaded Configuration File”,确认路径指向的是
...\xampp\php\php.ini - 再搜
post_max_size和upload_max_filesize,看值是否为你刚设的
大 SQL 导入还卡住?得调其他三个参数
phpMyAdmin 导入大型 SQL 文件不只是上传限制问题,脚本执行时间、内存和输入解析时间同样会中断导入。常见现象是上传成功但执行到一半报错“Script timeout”或“Allowed memory size exhausted”。
必须同步调整:
-
max_execution_time = 600(默认 30,大 SQL 解析很耗时) -
max_input_time = 600(POST 数据接收和解析阶段的时限) -
memory_limit = 512M(phpMyAdmin 加载并解析 SQL 时吃内存,尤其含大量 INSERT)
注意:memory_limit 值不能超过系统可用内存,且要高于 post_max_size(否则连 POST 数据都装不下)。
改完还是失败?直接跳过 phpMyAdmin
phpMyAdmin 是 Web 界面,本质是把 SQL 文件读进 PHP 再交给 MySQL 执行,中间多一层解析和转义,天然不适合超大文件(如 >200MB)。即使所有 PHP 参数拉满,仍可能因浏览器超时、HTTP 中断或 PHP 内部缓冲溢出失败。
更可靠的做法是命令行导入:
- 打开 XAMPP 控制面板 → 点击
Shell按钮(或手动进入xampp\mysql\bin\) - 执行:
mysql -u root -p database_name - 密码为空可直接回车;若设了密码,
-p后不跟值,它会交互式提示输入
这条命令绕过 PHP 和 HTTP 层,由 MySQL 原生解析 SQL,稳定、快速、无大小限制——这才是处理真正大库的常规操作。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











