该升级到哪个 PHP 版本

推荐升级到 PHP 8.4,修复版本是 8.4.27,安全更新到 2028 年 12 月 31 日。8.3 也可以。不要选 8.2,8.5 要等所有插件都支持再上。

简短的回答

升级到 PHP 8.4。它修复 PHP2Shell 的版本是 8.4.27。如果某个插件、框架或服务器软件包让你暂时上不了 8.4,8.3(在 8.3.36 中修复)是可以接受的第二选择。

新的迁移不要选 8.2。只有在你运行的所有东西都支持 8.5 时,才选 8.5。

受支持的分支及其终止日期

这里的“终止支持”指 PHP 项目不再为该分支发布安全修复的日期。日期来自 PHP 项目的受支持版本页面,读取于 2026 年 10 月 21 日。

分支修复版本终止支持现状
8.58.5.122029 年 12 月 31 日最新。2025 年 11 月 20 日发布。
8.48.4.272028 年 12 月 31 日推荐。2024 年 11 月 21 日发布。
8.38.3.362027 年 12 月 31 日可以接受。2023 年 11 月 23 日发布。
8.28.2.352026 年 12 月 31 日大约十周后结束。
8.1无,只有源码层面的 backport 分支2025 年 12 月 31 日已结束。见 PHP 8.1。
8.0无,只有源码层面的 backport 分支2023 年 11 月 26 日已结束。
7.4无,只有源码层面的 backport 分支2022 年 11 月 28 日已结束。见 PHP 7.4。

活跃支持(修 bug)和安全支持是分开的。8.4 的活跃支持在 2026 年 12 月 31 日结束,安全修复会持续到 2028 年 12 月 31 日。8.3 的活跃支持已经结束,只剩安全修复。

为什么选 8.4

  • 时间充裕。 安全修复持续到 2028 年 12 月 31 日,距离下一次被迫升级还有两年多。
  • 容易获得。 很多主机商的 PHP 版本选择器里已经有 8.4,主流 Linux 发行版和软件仓库也都提供。见 主机商 和 各发行版指南。
  • WordPress。 WordPress 手册列出从 WordPress 6.7 起支持 PHP 8.4。更早的 WordPress 版本(6.4 到 6.6)没有列出。
  • 少跳几次。 从 7.4 或 8.1 直接升到 8.4,中间每个版本的变化可以一次处理完。

有一点要说明。8.4 的活跃支持在今年年底结束,对一个发布两年的分支来说这很正常。安全修复按上表的日期继续提供。

为什么 8.3 可以接受

安全修复持续到 2027 年 12 月 31 日,从今天算大约还有 14 个月。如果你依赖的某个插件或库还不能在 8.4 上正常运行,就选 8.3,并把下一次迁移安排在 2027 年。

为什么不选 8.2

8.2 在 2026 年 12 月 31 日终止支持。现在迁到 8.2,几周后还得再迁一次。已经在 8.2 上的站点,应该现在安装 8.2.35 拿到 PHP2Shell 修复,然后安排迁移到 8.4。见 PHP 8.2。

为什么要等一切都支持才选 8.5

8.5 的支持期最长,但你的软件得能在上面跑。WordPress 手册列出从 WordPress 6.9 起支持 PHP 8.5。插件、主题、Composer 包,以及 imagick、redis 这类扩展,也都要各自支持 8.5。切换前逐一确认,并先读一遍 8.4 到 8.5 的迁移指南。

如果这些都能确认,8.5 是不错的目标。确认不了的话,8.4 更稳妥。

规划升级

  1. 如果你在 8.2 或 8.3 上,先安装当前分支的修复版本。 版本跳跃之后再按你自己的节奏做。如果你在 8.1 或更老的版本上,跳到新版本本身就是修复,见 暂时无法升级时。
  2. 备份文件和数据库, 并测试一次恢复。没有实际恢复过的备份,你无法确定它能用。
  3. 搭一个预发布(staging)副本, 运行目标 PHP 版本,扩展和 php.ini 设置与生产环境一致。
  4. 扫描代码。 对你自己写的代码运行 PHPCompatibility,也可以再跑一遍 Rector。命令在下面的指南里。
  5. 检查插件。 在 WordPress 里打开每个插件的页面,看它的 “Requires PHP” 字段,再看最近一次发布是什么时候。所有更新先在 staging 上做。多年没有发布新版本的插件,换掉。
  6. 在 staging 上打开完整的错误日志, 即 error_reporting = E_ALL 和 log_errors = On。把登录、结账、表单、上传和定时任务都点一遍,然后看日志。
  7. 切换生产环境, 重启所有 PHP worker,并 确认正在运行的版本。WordPress 主机的操作步骤见 更改 PHP 版本。
  8. 几天之内保留随时切回旧版本的能力。 大多数面板都可以一键切回。

不要为了让扫描通过去改第三方插件的代码。更新插件,或者换掉它。

兼容性工具

composer require --dev phpcompatibility/php-compatibility
vendor/bin/phpcs -ps --standard=PHPCompatibility --runtime-set testVersion 8.4 .

PHPCompatibility 读取你的源码,报告在指定版本上会出问题的代码。Rector 可以自动改写其中一部分。两者都不会运行你的代码,所以 staging 上的测试仍然少不了。

分步指南

最后审阅:2026年10月22日