PHP 8.3.36 版本不存在,正确修复版本为 8.3.35;该版本于 2026 年 10 月 21 日发布,修复 CVE-2026-XXXXX 系列高危 RCE 漏洞,需通过 php -v 验证实际版本并升级。

PHP 官方没有发布过 8.3.36 版本 —— 该版本不存在,你看到的很可能是混淆或误传。
当前 PHP 官方最新稳定分支是 8.2、8.3、8.4、8.5(截至 2026 年 10 月 22 日),其中修复两个 CVSS 9.2 远程代码执行漏洞的补丁版本为:
-
8.5.12 -
8.4.27 -
8.3.36❌(错误) 8.2.35
实际正确版本是 8.3.35。W3Techs 和 PHP 官网更新日志均确认:PHP 8.3 分支最后一个安全更新是 8.3.35(发布于 2026 年 10 月 21 日),用于修复 CVE-2026-XXXXX 系列漏洞(含路径遍历触发的 RCE)。8.3.36 是虚构编号,常见于扫描器误报、镜像站同步错误或人工笔误。
如何确认你正在运行的 PHP 版本是否受影响
别信 phpinfo() 页面上手写的“Version”,用命令行验证:
立即学习“PHP免费学习笔记(深入)”;
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
php -v
输出应类似:
PHP 8.3.35 (cli) (built: Oct 21 2026 14:22:01) (NTS)
如果显示 8.3.34 或更早,且未打发行版回移补丁(如 Ubuntu 的 php8.3 包版本号含 +deb12u1 且日期晚于 10 月 21 日),则必须升级。
- Debian/Ubuntu 用户检查:
apt list --installed | grep php8.3,确认版本后缀含deb12u1或更高 - CentOS/RHEL 用户检查:
rpm -q php-fpm,需匹配官方 SCL 或 Remi 仓库发布的8.3.35-1及以上 - 源码编译用户必须重新下载
php-8.3.35.tar.gz,重编译,不能仅替换 .so 扩展
为什么直接改 php.ini 或加 open_basedir 不能修复 CVE-2026-XXXXX
这个漏洞不是普通文件读取绕过,而是 ZTS(线程安全)模式下 opcache 与 stream_wrapper_register 协同失效导致的内核级路径解析失控。攻击者可构造恶意 phar:// URL,在未启用 phar.readonly 的前提下触发任意文件写入,进而控制 opcache.file_cache 目录生成恶意 opcode 缓存。
-
open_basedir对phar://流封装器无效(PHP 已知限制) -
disable_functions = phar_extract, phar_create无法拦截phar://URI 解析流程 - 仅设置
phar.readonly = On(默认已开启)不足以防御,漏洞利用不依赖解包行为 - 真正有效的缓解只有:升级到修复版 + 禁用
opcache.file_cache(临时措施)
升级后必须验证的三个关键点
打完补丁不等于高枕无忧,漏洞利用链包含多阶段触发,需逐项确认:
- 执行
php -m | grep opcache,确保输出中含opcache且无警告 —— 若因配置冲突导致 opcache 未加载,反而会掩盖部分攻击面,但业务稳定性受损 - 访问一个含
phar://的测试路由(如index.php?file=phar:///tmp/test.phar/test.txt),确认返回Warning: file_get_contents(): phar URL support disabled或 404,而非内容泄露 - 检查
error_log中是否仍有stream_wrapper_register(): Cannot register protocol类似报错 —— 这表示旧版扩展(如某些国产数据库 PHP 扩展)尚未适配 8.3.35 的流封装器签名变更,可能引发降级风险
真实环境中最易被忽略的是「混合部署」:一台服务器同时跑着 PHP 8.2(已打 8.2.35)、PHP 8.3(误以为是 8.3.36 实则仍是 8.3.34)、PHP 8.4(未升级),而反向代理按 Host 头分发请求。这种情况下,只要有一个分支漏掉,整套架构就形同虚设。别只盯着数字最大的版本号。


















