本文复盘PHP“php2shell”双漏洞(CVE-2026-109618/CVE-2026-109619,CVSS 9.2)应急响应全过程,剖析其OOM内存耗尽残留与Worker跨请求状态复用成因,给出8.2/8.3/8.4/8.5分支升级路径及WAF四板斧等临时缓解措施。

在Ubuntu上升级PHP修复漏洞,核心是换掉有安全问题的旧版本,装上已集成补丁的新版,不是打补丁,而是版本升级。当前(2026年11月)需特别关注 CVE-2026-109618 和 CVE-2026-109619(PHP2Shell,CVSS 9.2),官方修复版为 PHP 8.2.35、8.3.36、8.4.27、8.5.12。Ubuntu 默认源通常滞后,必须添加可信第三方源才能获取这些紧急更新。
确认当前版本与漏洞影响
先判断是否受影响,避免无效操作:
- 运行 php -v 查看当前版本,比如输出 PHP 8.2.20 就在 CVE-2026-109618/19 影响范围内(需 ≥8.2.35)
- 执行 php --ini 确认配置文件路径,后续要检查安全项是否保留
- 访问 PHP 官方支持周期页,确认你用的版本是否已停止安全维护
- 查变更日志:打开 PHP 8.x 变更日志,搜索 CVE-2026-109618,确认目标版本包含该修复
添加PPA源并安装新版PHP
Ubuntu 官方仓库不提供及时更新,必须用 Ondřej Surý 的 PPA(已被广泛验证且同步迅速):
- 添加源:sudo add-apt-repository ppa:ondrej/php
- 刷新索引:sudo apt update
- 安装 PHP 8.2.35(或更高修复版)及常用扩展:
sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl php8.2-mbstring php8.2-xml php8.2-zip
切换默认版本并重启服务
安装后系统可能仍用旧版,需手动切换:
立即学习“PHP免费学习笔记(深入)”;
- 执行 sudo update-alternatives --config php,按提示选择 PHP 8.2 对应编号
- 若用 Apache:sudo systemctl restart apache2
- 若用 Nginx + PHP-FPM:sudo systemctl restart php8.2-fpm
验证是否真正修复成功
装完不等于修好,必须验证三点:
- 版本对不对:php -v 应显示 8.2.35 或更高
- 配置加载是否正确:php --ini | grep "Loaded",确保路径指向新版本的 php.ini
- 关键扩展是否启用:php -m | grep -E "(mysql|curl|mbstring)",缺失会影响业务
- 安全项是否保留:打开 /etc/php/8.2/apache2/php.ini(或 fpm/cli 子目录),确认 display_errors = Off、expose_php = Off 仍生效
不复杂但容易忽略



















