PHP 8.2–8.5 修复版本已发布 独立社区资源 · 事实核实于 2026年10月22日

PHP2Shell 检测工具 / Docker PHP 镜像

Docker PHP 镜像怎么修复 PHP2Shell:从拉镜像到替换容器

Docker 里的 PHP 要经过五步才算修好:官方合并修复 → 镜像发布修复版本标签 → 你拉取或重新构建 → 重新创建容器 → 核对运行中的 PHP。只执行 pull 不会替换正在运行的容器。1Panel 的 PHP 运行环境同理,需等官方镜像出修复标签。

PHP2Shell.help 编辑部核实日期 官方来源 ↓

Docker 官方 PHP 镜像修复 PHP2Shell 了吗?

Docker 官方 PHP 镜像的修复更新已经合并(升级到四个修复版本)。但“合并”不等于每个标签、每种 CPU 架构的镜像都已经构建好推送出来,本站没有逐一核实。拉取前请确认镜像仓库里确实有修复版本的标签:

分支首个修复版本
PHP 8.28.2.35
PHP 8.38.3.36
PHP 8.48.4.27
PHP 8.58.5.12
8.1 及更早无新发行版(7.4、8.0、8.1 有官方源码补丁)

latest 这类浮动标签不能证明里面是修复版本,要看具体版本号。

1Panel 的 PHP 运行环境怎么办?

1Panel 的 PHP 运行环境用的是 1Panel 官方的 1panel/php 镜像。截至本站核实时,这个镜像的标签列表里还没有修复版本的标签(最新的仍是修复前的小版本)。在官方推出新标签之前:

  • 关注 1Panel 官方的更新通知;
  • 先做 临时缓解,必要时暂停网站;
  • 新标签出来后,在面板里把运行环境切换或重建到新版本,再复查。

用的是应用镜像(WordPress、Nextcloud 等)怎么办?

很多应用镜像里自带 PHP,由应用的维护者发布。应用版本号说明不了里面的 PHP 是哪个版本。要看该镜像维护者的公告,确认新镜像已经基于修复版本的 PHP 构建。

国外社区就有人问“Zabbix 的官方 Docker 镜像会不会为 PHP2Shell 重建”——这类问题只能等应用维护者回答,不能自己推断。

自己写的 Dockerfile 怎么修?

如果你的镜像是 FROM 官方 PHP 镜像构建的:

  1. 把 FROM 里的标签改成修复版本(或确认浮动标签已指向修复版本);
  2. 重新构建你的镜像,不能只改宿主机上的包;
  3. 推送到你的镜像仓库,再按正常流程部署。

不要在运行中的容器里直接升级 PHP 当长期方案:容器一重建,改动就没了。

为什么 pull 了新镜像,网站还是旧的?

docker pull / docker compose pull 只是把镜像下载到本地,正在运行的容器还在用旧镜像。要让服务按你原来的部署流程重新创建容器(比如 compose 重新 up),旧容器才会被替换。

重新创建前确认数据卷配置正确、有备份,避免数据丢失。

怎么确认容器里跑的是修复版本?

  • 看正在运行的容器用的镜像 digest,是否就是你刚拉取或构建的那个;
  • 在对应的容器里运行 php -v,宿主机的 php -v 不算数;命令行结果仍可能和网站进程不同,WordPress 网站再用站点健康确认,然后填进 PHP 版本检测;
  • 多副本、多节点的,每个都要确认。

“PR 合并 → 镜像发布 → 拉取/构建 → 部署 → 运行复查”是五个独立的检查点,不要合成一个“已修复”。

依据哪些来源?

不确定自己是否受影响,先用 PHP2Shell 检测。

检测你的 PHP 是否受 PHP2Shell 影响

输入网站使用的 PHP 版本,我们会和该分支的首个修复版本比较,并告诉你下一步怎么做。

PHP2Shell 检测工具 →

来源

本页的核心事实(修复版本、CVE 详情、发行版软件包、官方机构的提醒)都来自官方来源;研究报告、新闻和社区讨论已分别标注。