必须同步调整nginx的client_max_body_size、php-fpm的php.ini中upload_max_filesize与post_max_size、以及php-fpm超时和内存限制,三者缺一不可;修改后需重启nginx和php-fpm服务。

phpEnv 是 Windows 下的集成环境,修改上传大小不能只改 php.ini —— 它默认用 PHP-FPM + Nginx,而 Nginx 和 PHP-FPM 两级都有限制,漏掉任何一层都会失败。
确认当前 phpEnv 使用的是 Nginx + PHP-FPM
phpEnv 自 2024 年起默认启用 Nginx(非 Apache),所以 .htaccess 方式完全无效;ini_set() 也受限于 PHP-FPM 的 php_admin_value 配置,运行时无法覆盖关键上传参数。必须同时调整三处:
- Nginx 的
client_max_body_size(控制 HTTP 请求体上限) - PHP-FPM 的
php.ini(含upload_max_filesize、post_max_size等) - PHP-FPM 进程自身的超时与内存限制(
request_terminate_timeout、memory_limit)
修改 Nginx 的 client_max_body_size
phpEnv 的 Nginx 配置文件路径通常是 phpEnv\nginx\conf\nginx.conf 或 phpEnv\nginx\conf\vhost\default.conf。找到 server 块,在 location ~ \.php$ 内或 server 根级添加:
client_max_body_size 100M;
⚠️ 注意:这个值必须 ≥ 你期望的 post_max_size,否则请求在进入 PHP 前就被 Nginx 拒绝,$_FILES 和 $_POST 全为空,且不会报 PHP 错误,只返回 413 Request Entity Too Large。
修改 phpEnv 中的 php.ini(PHP-FPM 模式)
phpEnv 的 PHP 配置文件路径一般为 phpEnv\php\php.ini(不是 phpEnv\php\php-cli.ini)。需同步调整以下四项,缺一不可:
-
file_uploads = On(确保上传开关打开) -
upload_max_filesize = 50M(单个文件上限,建议 ≤post_max_size) -
post_max_size = 60M(整个 POST 请求上限,必须 ≥upload_max_filesize,且 ≤ Nginx 的client_max_body_size) -
memory_limit = 128M(建议设为post_max_size的 2 倍左右,避免解析大 POST 时内存溢出)
别忘了顺手调高超时项:max_execution_time = 600 和 max_input_time = 600,否则大文件上传中途就会被 PHP-FPM 强制终止,报 502 Bad Gateway 或空白页。
重启 phpEnv 的 Nginx 和 PHP-FPM 服务
phpEnv 界面右下角托盘图标 → 右键 → “Restart Nginx” 和 “Restart PHP-FPM”,**两个都要重启**。只重启其中一个,配置不会生效。验证是否成功,可建一个 info.php 文件写入 <?php phpinfo(); ?>,访问后搜索 upload_max_filesize 和 post_max_size,确认显示值已更新;再用 curl 或表单上传一个略超原限制的文件测试实际行为。
最容易被忽略的是 Nginx 层的 client_max_body_size —— 它不报 PHP 错,也不进日志,只静默拦截,排查时容易误判成 PHP 配置没生效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











