PHP2Shell 是 PHP 的问题
PHP2Shell(CVE-2026-109618 和 CVE-2026-109619)是 PHP 里的漏洞,PHP 就是 WordPress 运行所用的语言。WordPress 核心里没有这个漏洞,所以 WordPress 更新或安全插件都修不了它。关键看主机商为你的站点运行的是哪个 PHP 版本。
在 WordPress 仪表盘里查看
- 用管理员账户登录。
- 进入 工具 > 站点健康,打开 信息 选项卡。
- 展开 服务器 部分。
- 查看 PHP 版本 和 PHP SAPI 这两行。
你要的就是这个版本号。SAPI 说明 PHP 以什么方式接入 Web 服务器。
| 显示的 SAPI | 含义 |
|---|---|
apache2handler | Apache mod_php。风险最高:请求在任何 WordPress 代码运行之前就到达 PHP。 |
fpm-fcgi | PHP-FPM。受影响。 |
cgi-fcgi | php-cgi 或 FastCGI。受影响。 |
litespeed | LiteSpeed。受影响。 |
这些 SAPI 都在受影响范围内,都需要换成已修复的构建。SAPI 只决定更新有多紧急。
用 WP-CLI 查看
如果你有 shell 权限,运行下面的命令。
wp eval 'echo PHP_VERSION, " ", PHP_SAPI, "\n";'
输出类似 8.3.36 cli。注意末尾的 cli。WP-CLI 用的是命令行的 PHP 程序,它的版本可能和 Web 服务器用的不一样。把这个数字当作参考,再到站点健康里确认,那里显示的是实际处理页面请求的 PHP。
在主机控制面板里查看
控制面板按域名显示版本,通常只显示分支,比如“8.3”,不带最后几位。
- cPanel: Software > MultiPHP Manager。如果主机商用的是 CloudLinux,你看到的可能是 Software > Select PHP Version。
- Plesk: Websites & Domains,选择域名,再进入 PHP Settings。
- 其他面板或托管型 WordPress: 找“PHP 版本”或“PHP 设置”。我们的 主机商页面 列出了各家目前的说法。
控制面板不显示确切的构建号。用它看分支,用站点健康看构建。
对照修复版本
PHP 官方在这些版本里修复了漏洞。
| 分支 | 修复版本 | 显示以下版本即为已修复 |
|---|---|---|
| 8.5 | 8.5.12 | 8.5.12 或更高 |
| 8.4 | 8.4.27 | 8.4.27 或更高 |
| 8.3 | 8.3.36 | 8.3.36 或更高 |
| 8.2 | 8.2.35 | 8.2.35 或更高 |
| 8.1、8.0、7.4 及更早 | 没有修复版本 | 受影响,除非主机商向后移植了修复 |
举例来说,8.4.27 已修复,8.4.26 没有。8.3.6 看起来很接近,但同样没有修复。
你可以把完整的版本号粘贴到 版本检查,直接得到判断结果。
版本号低,不一定就有漏洞
有些主机商和 Linux 发行版会把修复向后移植,同时保留旧的版本号。比如 cPanel 表示,它已为 ea-php74、ea-php80 和 ea-php81 发布了向后移植的修复。如果你的版本号低于上表,主机商却说已经打了补丁,就请对方提供软件包名称,以及列出这两个 CVE 编号的更新日志条目。拿不出来的话,这个回答说明不了什么。
打了补丁的软件包,还要重启 PHP 进程才会生效。不确定的话,问主机商为你站点服务的 worker 在 10 月 21 日之后有没有重启过。
下一步
- 已修复的构建: 版本方面不用再做什么。如果你的站点不用上传进度功能,PHP 官方建议保持
session.upload_progress.enabled关闭。在共享主机上,这由主机商决定。 - 分支对,构建旧: 问主机商什么时候更新,或者自己换到更新的分支,见 切换 PHP 版本。
- 8.1 或更早: 规划迁移。我们推荐 PHP 8.4。暂时没法迁移的代码有哪些选择,见 旧版 PHP 的选择。
- 不知道谁负责给你的 PHP 打补丁: 从 情况判断 开始。
- 发现了入侵迹象: 去看 PHP2Shell 之后 WordPress 被入侵。
最后审阅:2026年10月22日