要让PHP 8.3的upload_max_filesize生效,必须同步调整post_max_size(≥该值)和memory_limit(≥post_max_size的1.5倍),确认phpinfo()显示的Loaded Configuration File路径后修改对应php.ini,单位用大写M/G且无引号,最后重启Apache或PHP-FPM服务。

要让 PHP 8.3 的 `upload_max_filesize` 生效,不能只改这一个参数——它必须和另外两个配置协同调整,且修改后必须重启服务。否则即使设成 `2G`,上传几十 MB 文件仍会报错 `UPLOAD_ERR_INI_SIZE`(错误码 1)。
确认当前生效的 php.ini 路径
别猜、别改错文件。新建一个 info.php,内容为:
用浏览器访问它,搜索Loaded Configuration File,看到的路径才是真实起作用的配置文件。CLI 和 Web 环境可能加载不同 ini(比如 /etc/php/8.3/apache2/php.ini 或 /etc/php/8.3/fpm/php.ini),务必对准你实际跑 PHP 的模式。
同步修改三个关键参数
打开上面确认的 php.ini 文件,找到并修改以下三项(单位必须大写,不加引号):
-
upload_max_filesize:单个文件上限,例如
upload_max_filesize = 128M -
post_max_size:整个 POST 请求体上限,必须 ≥ upload_max_filesize,建议多留 5–10MB,例如
post_max_size = 140M -
memory_limit:PHP 脚本可用内存,上传大文件或做图像处理时易爆内存,建议 ≥ post_max_size 的 1.5 倍,例如
memory_limit = 256M
注意:max_file_uploads(默认 20)也可按需调高,比如设为 max_file_uploads = 50,但不是上传失败的主因。
重启对应的服务
改完保存,必须重启才能生效:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- Apache + mod_php:运行
sudo systemctl restart apache2 - Nginx + PHP-FPM:先重启 FPM(如
sudo systemctl restart php8.3-fpm),再重载 Nginx(sudo systemctl reload nginx)
如果用的是 Docker,记得重建容器或执行 docker exec -it [container] systemctl restart php8.3-fpm(取决于镜像是否支持)。
验证是否真正生效
刷新 info.php 页面,搜索 upload_max_filesize、post_max_size 和 memory_limit,确认显示值已更新。再写个简单上传脚本,在开头加:
var_dump($_FILES); die();
上传一个略超原限制的文件,看 error 字段是不是还是 1。如果是,说明某处配置没生效或被覆盖。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










