概述
2026 年 10 月 21 日,PHP 官方发布紧急安全更新,修复 PHP 解释器核心中的两个严重漏洞 CVE-2026-109618 与 CVE-2026-109619,CVSS v4.0 评分均为 9.2。两个漏洞均可导致未授权的远程代码执行(RCE):攻击者无需登录,也无需站点暴露特定业务接口,通过发送特制 HTTP 请求,即可在 PHP 进程权限下执行任意命令。
PHP 官方说明,所有处理 Web 请求的 PHP 部署形态均受影响,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 和 LiteSpeed,其中 Apache mod_php 风险最高;本次漏洞没有完整的缓解方案,升级到修复版本是唯一安全的选择。
漏洞影响范围
PHP 分支 | 受影响版本 | 修复版本 |
8.5.x | 低于 8.5.12 | 8.5.12 |
8.4.x | 低于 8.4.27 | 8.4.27 |
8.3.x | 低于 8.3.36 | 8.3.36 |
8.2.x | 低于 8.2.35 | 8.2.35 |
PHP 8.1 及更早版本:官方不再提供更新,仅额外提供 PHP 7.4、PHP 8.0、PHP 8.1 的最小源码补丁(source backport)。使用发行版安装包请联系发行版供应商,或升级到受支持的 PHP 8 分支。
PHP 8.2:将于 2026 年 12 月 31 日结束生命周期,此后不再获得安全修复。
宝塔面板三步修复法:照着做,别慌
先说原则:优先升级,临时配置只是兜底。只有补丁能真正堵住漏洞,临时缓解只是降低风险,不是根治。
【第一步:备份】
升级前先把网站文件和数据库完整备份一份。宝塔面板左侧“网站”里,每个站都有备份入口,顺手也能用“计划任务”加个自动备份。这是所有操作的地基,出问题能一键回滚。
【第二步:8.x 版本直接面板升级】
如果你是 PHP7.4-PHP8.2 及以上,最简单。
登录宝塔面板 → 软件商店 → 已安装 → 找到正在用的 PHP 版本 → 点管理 → 检查更新,直接升到对应安全版本。
PHP7.4以上版本,8.1以下的版本,宝塔出了安全修复版本,PHP8.1->PHP8.1.35、PHP8.0->PHP8.0.31、PHP7.4->PHP7.4.34。上面用的是宝塔PHP修复版本。
升完在“软件商店-已安装”里核对版本号,确认是 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 其中之一。上面用的是官方的补丁升级。
然后重点测一遍:网站能不能开、上传功能正不正常、数据库连不连得上、后台登录顺不顺。
【第三步:老版本用宝塔修复版】
如果你还跑在 PHP 7.0~7.3,官方不提供补丁了,但宝塔已经出了修复版,是从 7.4 官方补丁逐行比对回移出来的四个版本:7.0.34、7.1.34、7.2.35、7.3.34(宝塔修复版)。
按你的版本,在服务器终端(SSH)里选一条执行:
PHP 7.0:curl -o php7_cve.sh download.bt.cn/install/php7_cve.sh && bash php7_cve.sh install 70
PHP 7.1:curl -o php7_cve.sh download.bt.cn/install/php7_cve.sh && bash php7_cve.sh install 71
PHP 7.2:curl -o php7_cve.sh download.bt.cn/install/php7_cve.sh && bash php7_cve.sh install 72
PHP 7.3:curl -o php7_cve.sh download.bt.cn/install/php7_cve.sh && bash php7_cve.sh install 73
几点提醒:
执行前务必先备份;升级会重启 PHP,站点会有短暂不可用,选低峰期操作;这是宝塔自建补丁,强烈建议先在测试环境把业务跑一遍,确认没问题再上生产;一台服务器往往装了多个 PHP 版本,逐一核查,别漏掉还在偷偷跑着的旧版。
【临时缓解方案:只能降低风险,不能替代升级】
如果一时半会儿升不了,先做这些止血。
针对 CVE-2026-109619,改 php.ini,把 session.upload_progress.enabled 设为 0;PHP 8.5 额外加一条 fatal_error_backtraces = 0。改完重启 PHP。
针对 CVE-2026-109618,调整 POST 大小限制:没有大文件上传就设 post_max_size = 8M,需要传文件就 32M,同时保证 upload_max_filesize 小于 post_max_size。别乱用 memory_limit = -1,它确实能降低利用条件,但等于关掉了 PHP 内存限制,小白千万别碰。
另外可以在 Nginx/Apache 代理层限制请求体大小、参数数量,多一道防线。
