php上传失败需同步修改phpenv中真实生效的php.ini(通过info.php确认路径)的upload_max_filesize和post_max_size(如64m/128m),并调整httpd.conf中limitrequestbody值或注释该行,最后重启apache服务。

phpEnv 是 Windows 下轻量级 PHP 本地开发环境(类似 XAMPP,但更精简),它默认使用 Apache + PHP 独立包组合。上传失败不是因为“改不了”,而是你大概率改错了文件、没重启服务、或漏了 Apache 层限制。
确认 phpEnv 正在用的 php.ini 路径
phpEnv 不会自动告诉你它读的是哪个 php.ini —— 它可能从 Apache 的 php.ini 加载,也可能从 PHP 自带目录加载,甚至被 php.ini-development 或 php.ini-production 覆盖。
- 在 phpEnv 根目录下新建一个
info.php,内容为<?php phpinfo(); ?> - 用 phpEnv 自带浏览器访问
http://localhost/info.php - 搜索
Loaded Configuration File,看到的路径才是真实生效的php.ini - 如果显示
none或路径为空,说明 PHP 没加载到配置文件,此时上传必然失败(连默认 2M 都不会生效)
必须同时改的两个 php.ini 参数
upload_max_filesize 和 post_max_size 是硬绑定关系:只改一个等于白改。
-
upload_max_filesize = 64M—— 单个文件上限(如上传一张 50MB 的 PSD) -
post_max_size = 128M—— 整个 POST 请求总容量(含文件 + 表单字段 + 文件名等),必须 ≥upload_max_filesize - 数值后必须带单位,
64或64m(小写)都无效,只能是64M或64K - 别设
0或unlimited:PHP 解析器不认,会导致启动失败或配置被忽略
Apache 层也要同步放开限制
phpEnv 底层是 Apache,它自己也拦大上传 —— 尤其是默认配置里 LimitRequestBody 可能设成了 1048576(即 1MB)。
- 打开 phpEnv 安装目录下的
Apache/conf/httpd.conf - 搜索
LimitRequestBody,找到类似这一行:LimitRequestBody 1048576 - 把它改成更大的值,例如:
LimitRequestBody 134217728(即 128MB),或直接注释掉这行(Apache 2.4+ 默认不限制) - 保存后,**必须点 phpEnv 控制面板里的 “Restart Apache”**,仅重启 PHP 进程无效
改完怎么验证有没有生效
别急着传大文件测试,先看三处是否一致:
- 用
php --ini命令确认 CLI 模式读的也是同一个php.ini(避免你改了 CLI 用的配置,但 Apache 用的是另一份) - 刷新
info.php页面,确认upload_max_filesize和post_max_size显示值已更新 - 检查页面底部的
Configuration File (php.ini) Path和Loaded Configuration File是否指向同一路径 —— 如果不一致,说明你改的不是它正在读的那个 - 上传失败时若报错
413 Request Entity Too Large,那是 Apache 拦的;若报UPLOAD_ERR_INI_SIZE,才是 PHP 层限制没改对
最常被忽略的一点:phpEnv 的 Apache 配置有时会把 php.ini 路径硬编码进 httpd.conf 里的 PHPIniDir 指令。如果你改了别的 php.ini 却没同步改这里,等于全白干。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











