在 phpEnv 中需手动修改 Nginx 配置文件(如 C:\phpenv\nginx\conf\nginx.conf 或 /usr/local/phpenv/nginx/conf/nginx.conf),将 client_max_body_size 添加到 http、server 或 location 块中,优先级为 location > server > http;同时须同步调整 php.ini 中的 upload_max_filesize 和 post_max_size,并重启 Nginx 与 PHP-FPM 服务。

phpEnv里改Nginx的client_max_body_size在哪配
在 phpEnv 中,Nginx 的上传限制由 client_max_body_size 控制,但它**不写在 php.ini 里,也不在 phpEnv 图形界面中设置**——必须手动修改 Nginx 配置文件。默认路径是:C:\phpenv\nginx\conf\nginx.conf(Windows)或 /usr/local/phpenv/nginx/conf/nginx.conf(Linux/macOS)。打开后,在 http 块或某个 server 块内添加或修改该指令即可。
加在哪一级配置才生效
client_max_body_size 支持三级作用域:全局 http、单个 server、或具体 location。实际使用时优先级为 location > server > http。常见错误是只改了 http 块,但项目用了独立的 server 配置(比如 phpEnv 自动为每个站点生成的 vhost 文件),结果无效。
- 如果所有站点都要传大文件,加到
http块最省事 - 如果仅某个 PHP 项目需要(如后台上传视频),应加到对应
server块里,且确保该server没被include覆盖 - 若只允许特定接口(如
/api/upload)传大文件,可限定在location /api/upload { ... }内
除了 Nginx 还得同步调 PHP 的限制
只改 client_max_body_size 不够,PHP 层还有两个关键限制:
-
upload_max_filesize(php.ini):单个文件最大体积 -
post_max_size(php.ini):整个 POST 请求体上限,必须 ≥upload_max_filesize
例如要支持 200MB 文件上传,建议设为:
立即学习“PHP免费学习笔记(深入)”;
upload_max_filesize = 200M<br>post_max_size = 200M
改完记得重启 phpEnv 的 Nginx 和 PHP-FPM 服务(图形界面点「重启」或命令行执行 phpenv restart)。
改完还是 413 Request Entity Too Large
出现这个错误,90% 是配置没生效或被覆盖。排查顺序:
- 确认修改的是当前生效的配置文件(用
nginx -t检查语法,用nginx -T输出完整加载配置,搜索client_max_body_size看是否出现在最终合并结果里) - 检查是否多个
server块定义了冲突值(后加载的会覆盖前一个) - 浏览器或代理(如 Chrome 扩展、公司防火墙)可能拦截大请求,换 curl 测试:
curl -X POST -F "file=@large.zip" http://localhost/upload.php - Windows 下注意路径权限:确保 nginx 进程有权限读取你修改的 conf 文件
真正麻烦的不是改哪一行,而是 phpEnv 把 Nginx 配置拆成主 conf + 多个 vhost + include 指令,容易漏掉某一层的实际生效位置。



















