php 8.5.12 仅修复 cve-2026-109618 和 cve-2026-109619 两个内核级 rce 漏洞,不解决文件权限等部署层问题;chmod(0777) 反增风险,应按 php 进程用户(如 www-data)设最小必要权限。

PHP 8.5.12 本身**不修复文件权限配置漏洞**——它只修复两个高危内核级 RCE 漏洞(CVE-2026-109618 和 CVE-2026-109619)。所谓“文件权限配置漏洞”,是部署层问题,和 PHP 版本升级无关。别指望升级到 8.5.12 就能自动修好 storage/ 不可写、config.php 权限过宽这类问题。
为什么 chmod(0777) 不是解法,反而是风险源
很多开发者看到 is_writable() 报错,第一反应是给目录加 0777。这等于把门敞开:0777 允许任何系统用户读、写、执行,一旦 Web 目录被上传恶意脚本或日志被注入,攻击者就能直接利用。
-
0777在 Nginx + PHP-FPM 环境下毫无意义:PHP 进程以www-data或nginx用户运行,其他用户根本不需要访问权 - Web 服务器(如 Nginx)默认不执行 PHP 文件,但
x权限一旦开放,配合错误的location配置可能触发解析绕过 - 容器环境里设
0777还会破坏USER指令的安全隔离
实际该改谁的权限:看 PHP 进程运行身份
关键不是“PHP 版本”,而是“哪个用户在跑 PHP”。必须让这个用户对目标路径有最小必要权限。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 查当前 PHP 进程用户:
ps aux | grep php-fpm | head -2(找master行的 USER 列)或看php-fpm.conf中的user = www-data - 查 Web 服务器用户:
ps aux | grep nginx | grep master或httpd -V | grep 'USER' - 属主必须匹配:比如
www-data:www-data,不能是root:root或ubuntu:ubuntu - 目录用
755(rwxr-xr-x),文件用644;可写目录(如storage)单独设为755或775,但绝不用777
chmod() 函数本身在 8.5.12 里没变,但调用它前得先过安全关
chmod() 是个普通函数,8.5.12 没动它的逻辑。但它能否成功,取决于底层系统权限——而这个权限现在更“脆”了:CVE-2026-109619 导致全局状态残留,如果 PHP-FPM worker 在上一个请求中因权限失败崩溃过,残留状态可能让下一个请求的 chmod() 调用行为异常(比如返回 true 却实际没生效)。
- 别在 PHP 里用
exec("chmod"):既绕不开权限限制,又引入命令注入风险 -
chmod()返回true≠ 权限已生效:必须后续用is_writable()或touch()实测 - SELinux/AppArmor 开启时,
chmod()成功但依然报Permission denied:得查ausearch -m avc -ts recent | grep php
chown -R 和 find ... -chmod 在 shell 里一次性设好,再启动。升级 8.5.12 是为了堵住内存管理的后门,不是为了帮你收拾部署烂摊子。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










