PHP 8.5上传文件大小限制需同步调整PHP配置、Web服务器配置和临时目录权限三处。1. 修改php.ini中upload_max_filesize=128M、post_max_size=132M、memory_limit=256M、max_execution_time=max_input_time=600,重启php8.5-fpm;2. Nginx加client_max_body_size 135M并重载,Apache在.htaccess设php_value(仅mod_php有效);3. 确保upload_tmp_dir存在、www-data可写且空间充足。

PHP 8.5 上传文件大小限制不能只改一个地方,必须同步调整PHP 配置、Web 服务器配置、临时目录权限三处,缺一不可。
1. 修改 php.ini 中的四个关键参数
先用 <?php phpinfo(); ?> 找到 “Loaded Configuration File” 路径——你改的必须是这个文件。
打开它,修改以下四行(单位写 M 或 G,不加引号):
- upload_max_filesize = 128M —— 单个文件最大允许大小
- post_max_size = 132M —— 整个 POST 请求上限(必须 > upload_max_filesize)
- memory_limit = 256M —— 至少为 post_max_size 的 1.5 倍,避免处理中断
- max_execution_time = 600 和 max_input_time = 600 —— 防止大文件上传中途超时
改完保存,必须执行 sudo systemctl restart php8.5-fpm(仅 reload 不生效)。
立即学习“PHP免费学习笔记(深入)”;
2. 同步调整 Nginx 或 Apache 的请求体限制
如果 Web 服务器提前拦下请求,PHP 根本收不到数据。
Nginx 用户:在站点配置(如 /etc/nginx/sites-enabled/your-site)的 server 或 location ~ \.php$ 块内添加:
- client_max_body_size 135M(≥ post_max_size)
- client_body_timeout 600
然后运行 sudo nginx -t && sudo systemctl reload nginx。
Apache 用户:若用 mod_php(非 PHP-FPM),可在 .htaccess 中加:
- php_value upload_max_filesize 128M
- php_value post_max_size 132M
注意:PHP-FPM 模式下 .htaccess 无效,必须改 php.ini。
3. 检查 upload_tmp_dir 是否可用
PHP 上传时先把文件暂存到 upload_tmp_dir(默认系统临时目录)。若该目录不存在、www-data 用户无写权限、或磁盘空间不足,move_uploaded_file() 会静默失败,$_FILES['error'] 可能仍为 0。
确认方式:
- 在 phpinfo() 页面查找 upload_tmp_dir 值
- 执行
ls -ld /path/to/tmp看权限,确保 www-data 可写 - 必要时在 php.ini 中显式指定:upload_tmp_dir = /var/tmp/php-uploads,并创建目录、赋权:
sudo mkdir -p /var/tmp/php-uploads && sudo chown www-data:www-data /var/tmp/php-uploads



















