还在用 PHP 5:PHP2Shell 对你意味着什么

PHP 5.6 已于 2018 年 12 月 31 日结束支持,PHP 项目没有为 PHP 5 提供任何 PHP2Shell 修复。请按受影响处理,尽快规划迁移。

把 PHP 5 当作受影响且没有补丁

PHP 5.6 是 5.x 的最后一个分支,在 2018 年 12 月 31 日 结束了支持。它的最后一个版本是 5.6.40。更早的 5.x 分支在那之前好几年就已经结束。

针对 PHP2Shell,PHP 项目列出了 8.2 到 8.5 的修复,并为 7.4、8.0 和 8.1 发布了源码 backport 分支。5.x 什么都没有,连一句说明都没有。

PHP 项目没有说 5.x 是否存在同样的缺陷。一些二手来源声称 PHP 5 及以后的所有构建都受影响。官方公告只点名了 8.2 到 8.5,而 NVD 记录里的版本范围在形式上也覆盖了更老的构建。这两种说法我们都无法针对 5.x 确认,也不知道有哪个公开测试可信。

稳妥的假设是,PHP 5 受影响,上游没有修复,以后也不会有。

PHP 5 本来就不安全

跑 PHP 5.6 的服务器从 2019 年初起就再没有拿到安全修复。早就该迁出 PHP 5 了。PHP2Shell 让你剩下的时间更短。

谁还在卖 PHP 5 构建

有些厂商在 PHP 项目停止维护后继续给旧版 PHP 打补丁。就我们找到的信息看,没有一家确认过自己的 PHP 5 构建覆盖了这两个 CVE。我们在 2026 年 10 月 21 日最后一次检查时的状态如下。

来源PHP 5 覆盖范围PHP 5 的 PHP2Shell 状态
TuxCare ELS产品页列出从 5.2 起的 PHP在它的跟踪器里,两个 CVE 我们都没找到条目
CloudLinux alt-php提供 5.2 到 8.5 的构建CloudLinux 称构建“正在准备”。只有 alt-php74 的构建标为已发布
Ubuntu Pro 加 Legacy Support14.04 带 php5 5.5.9,16.04 带 php7.0USN-8948-2 中列为已修复。注意是 5.5.9,不是 5.6
HeroDevs NES从 PHP 7.2 起不覆盖

Red Hat 对 RHEL 6 和 RHEL 7 的数据前后不一,这两个版本带的是 PHP 5.x 构建。它把 RHEL 6 列为不受 CVE-2026-109618 影响,CVE-2026-109619 标为“no fix planned”,对 RHEL 7 的说法互相矛盾。别把这当成没事的证明。这些数据只涉及 Red Hat 自己的旧构建,问题仍然没有定论。

笼统承诺“覆盖 5.x”,并不能说明 CVE-2026-109618 和 CVE-2026-109619 的情况。按每个 CVE 编号逐一问厂商,并拿到书面答复。更详细的对比见 旧版 PHP 的选择。

这周该做什么

  1. 弄清楚 PHP 由谁运行。 在自己的服务器上执行 php -v,记下 SAPI。用虚拟主机的话,打开面板里的 PHP 设置。如果那里只能选 PHP 5,说明主机商已经落后了。看一下 虚拟主机指南,并按 情况判断 里的问题去问。
  2. 能减少的暴露面先减少。 站点不需要公开的话,在代理上给它加登录或 VPN。这样能缩小暴露面,但并没有修复漏洞。
  3. 规划迁移。 5.x 没有补丁可打,迁出去就是修复。
  4. 检查有没有被入侵。 老旧环境还带着很多其他没修的漏洞,要找找以前被入侵的痕迹。见 打补丁之后,WordPress 站点另见 被入侵后怎么办。

如果服务器由你自己管理,这周又迁不走,WordPress.org 自己的 PHP2Shell 公告建议,自己管理服务器且运行 8.2 以下版本的站长,在迁移期间考虑让服务器下线。它引用的是英国 NCSC 的意见。这条建议出自 WordPress.org。

现实可行的迁移路线

从 5.6 直接跳到 8.4 很少能成功。分成两步走,每一步都保留一份能正常运行的站点副本。

第一步,5.6 到 7.4。 这是最大的一跳。PHP 7.0 删除了老的 mysql_* 函数,还在调用它们的代码都要改用 mysqli 或 PDO。PHP 5 时代的插件、主题和库往往有新版本,没有的就换掉。参照 PHP 手册里 5.6 到 7.0 的迁移指南,然后在测试副本上逐个过 7.1 到 7.4。PHP 7.4 本身也已结束支持,只把它当作中转站,接着往上走。

第二步,7.4 到 8.4。 见 7.4 升到 8.4 指南。8.4 支持到 2028 年 12 月 31 日,PHP2Shell 的修复从 8.4.27 起包含在内。

WordPress 方面,当前的 core 把 PHP 7.4 及以上列为可运行范围,推荐 8.3 或更高。跑在 PHP 5.6 上的 WordPress 站点,core 多半也很旧,所以 PHP 迁移和 WordPress 更新要一起做。见 查看 PHP 版本 和 切换 PHP 版本。

迁移不现实的时候

如果应用很老、没人维护,也没人能修,可以考虑下面几条路。

  • 重建。 小站点把内容搬到当前的 CMS 上,往往比移植多年积累的 PHP 5 代码便宜。
  • 冻结并隔离。 把它转成静态页面,或者把旧应用放在 VPN 后面的私有网络里。
  • 付费购买厂商构建, 前提是厂商先确认两个 CVE 都覆盖你正在用的版本。

不管选哪条,都把做出决定的日期记下来。完整的选项列表见 PHP 生命周期结束。

最后审阅:2026年10月22日