应修改 phpEnv 自带的 php.ini(如 C:\phpEnv\php\php.ini),确认路径后设置 upload_max_filesize 和 post_max_size(如 50M 和 52M),并彻底重启 Apache。

phpEnv里改哪个配置项才管用
phpEnv 是 Windows 下的 PHP 集成环境(类似 XAMPP),它自带 Apache + PHP,但配置文件路径和生效逻辑和标准部署不同。直接改系统级 php.ini 可能无效——phpEnv 会优先读取它自己目录下的 php\php.ini,通常是 C:\phpEnv\php\php.ini 或类似路径。
你得确认当前运行的 PHP 实际加载的是哪个 php.ini:在 phpEnv 控制面板里点「PHP Info」,或新建一个 info.php 放进网站根目录,内容为 ,浏览器访问后搜索 “Loaded Configuration File”,看显示的路径。
常见错误是改了 C:\Windows\php.ini 或其他位置的副本,而 phpEnv 根本没读它。
post_max_size 和 upload_max_filesize 必须怎么配
这两个值不是随便调大就行,它们有强依赖关系:
-
post_max_size必须 ≥upload_max_filesize,否则哪怕单个文件没超,只要 POST body 含 multipart 边界、其他表单字段,整个请求就会被截断 - 如果上传多个文件,
post_max_size还要预留开销:每个文件上传都会带额外边界字符串和字段头,建议比所有文件总和多留 2–5MB - 单位只认
K、M、G(大写),m或mb会失效,变成默认值 - 示例合理配置(支持单个 50MB 文件):
upload_max_filesize = 50M<br>post_max_size = 52M
改完不生效?检查 phpEnv 的 Apache 是否真重启了
phpEnv 界面里的「Restart Apache」按钮有时只 reload 而非 full restart,尤其当 Apache 进程卡住时,旧配置仍驻留在内存中。
稳妥做法:
- 在 phpEnv 控制面板先点「Stop Apache」,等状态变灰再点「Start Apache」
- 或者手动进任务管理器,杀掉所有
httpd.exe进程后再启动 - 改完配置后,务必刷新
phpinfo()页面,确认页面上显示的post_max_size和upload_max_filesize值已更新 - 如果仍报错且
$_FILES为空、$_POST也收不到数据,基本就是post_max_size在拦,不是前端或 JS 的问题
别漏掉 Apache 自身的 LimitRequestBody(极少见但存在)
phpEnv 默认不用这个,但如果你手动改过 Apache 配置(比如在 httpd.conf 或虚拟主机配置里加过 LimitRequestBody),它会硬性截断整个请求体,且不提示 PHP Warning,而是直接 400 或连接中断。
检查方法:
- 搜
phpEnv\apache\conf\httpd.conf和phpEnv\apache\conf\extra\下所有 .conf 文件 - 找是否有
LimitRequestBody行,如有且值太小(如LimitRequestBody 8388608),注释掉或调大 - 这个指令优先级高于 PHP 配置,一旦存在就先触发,PHP 根本收不到数据
真正容易被忽略的是:错误日志里只报 PHP Warning,没人会去翻 Apache error.log,但那里可能早有 “request body exceeds LimitRequestBody” 的记录。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











