PHP-FPM 进程池参数怎么算?内存除法题,算错就 502

来源:互联网 时间:2026-08-28

后台传个 30MB 的视频或者 8MB 的主题包,进度条走到一半报错,或者干脆显示上传成功但文件不存在。这类问题的根源九成是 PHP 的上传限制,而且牵一发动全身——不是改一个参数就完事,得三个一起改。

; php.ini 上传相关三件套
upload_max_filesize = 64M ; 单个文件最大体积
post_max_size = 68M ; 整个POST请求最大体积(要比上面大)
memory_limit = 128M ; 脚本可用内存(处理大文件时也得够)

 upload_max_filesize。最容易踩的坑是只改了 upload_max_filesize,忘了 post_max_size——表单里除了文件还带点别的字段,POST 总量超了限制,PHP 直接拒绝整个请求,表现就是莫名失败。

PHP 这关过了还有 Nginx 这关。Nginx 默认 client_max_body_size 只有 1MB,超了直接返回 413 错误,请求根本到不了 PHP。

# nginx.conf 的 http 或 server 块里
client_max_body_size 64m;

# 改完重载
nginx -t && nginx -s reload

改 php.ini 之后记得重启 php-fpm 而不是 reload,个别版本 reload 不重读 ini。不确定改没改对,放一个探针页面看一眼最保险:

<?php
// info.php 访问后搜索 upload_max_filesize
phpinfo();
// 看完立刻删掉这个文件,别留在服务器上

还有个细节:上传的临时目录(upload_tmp_dir)所在分区要够大,大文件先落临时区再挪到目标目录,临时区满了同样失败。另外上传超时也得留意,网速慢的用户传大文件,max_execution_time 和 fastcgi_read_timeout 太短会中途断线,按需放宽。

最后提醒一句,开放大文件上传等于放大了被灌垃圾文件的风险,上传目录的权限、格式校验这些之前的文章讲过,别这边开了 64MB 那边忘了关大门。

数据来源:PHP官方手册 php.ini核心配置指令

相关文章

标签:

A5创业网 版权所有