HOWTO · PHP

在 CentOS 上将 PHP 7.x 更新到 7.4

本文回顾在 CentOS 7 上为 PHP 7.4 升级所做的准备、历史方案、验证方式及兼容性考量;不提供可直接执行的升级步骤。

本页内容

本指南介绍在 CentOS 7 系统上将 PHP 7.x 迁移至 PHP 7.4 的历史做法,涵盖事前准备、Remi 存储库、Software Collections、源码构建和验证。CentOS 7 和 PHP 7.4 都是旧版本;本文不建议今天部署它们,也不表示任何特定存储库或软件包来源目前仍支持它们。规划变更前,请确认实际操作系统和应用的生命周期及兼容性要求。

现有资料未验证适用于 CentOS 7 的特定存储库配置、软件包集合或安装流程。请将下文的方法介绍视为比较历史方案的参考,而非可直接复制执行的升级指令。对于实际系统,请查阅与其操作系统版本、存储库状态、PHP 构建方式及 Web 服务器集成方式相符的权威文档。

前置条件与备份

更改 PHP 前,请确认要管理的系统和 PHP 安装、应用加载 PHP 的方式,以及应用依赖的配置文件和扩展。你需要拥有变更流程所需的账户权限,并准备经过验证的恢复方案。只有备份包含相关 PHP 配置和应用数据,而且你知道如何还原时,它才真正有用。

记录当前 CLI 版本、可执行文件位置、已加载的配置文件和扩展。命令 php -v 会报告当前 shell 通过 PATH 找到的 PHP 命令版本;它无法确定每个 Web 服务器或应用进程使用的版本。将这份清单与变更记录一同保存,以便对照结果,并在需要时有计划地回滚。

选择方法前,请检查应用及其依赖是否支持 PHP 7.4。在与生产环境相符的暂存环境中演练变更,并纳入定时任务和 Web 服务器集成的测试。不要使用通配符删除软件包:先准确确认现有配置包含哪些软件包,以及删除它们会如何影响其他应用。

使用 Remi 存储库更新 PHP

Remi 存储库曾是 Enterprise Linux 系统获取 PHP 构建版本的一种历史软件包方案。采用基于存储库的升级方式时,管理员通常会先确认存储库版本和 PHP 流与主机相匹配,再选择所需软件包,并规划如何替换或更新现有安装。

不要仅凭本概述,就把通用的存储库安装命令或流名称复制到 CentOS 7 系统中。正确的存储库配置、软件包名称、可用构建版本及其依赖影响取决于主机和存储库的实际状态,本文并未验证这些信息。请查阅适用的存储库文档,并在批准变更前检查软件包管理器提出的事务计划。保留先前的配置,并准备经过验证的恢复方案。

更改软件包后,请验证 CLI 可执行文件,并单独验证应用运行时。仅检查 CLI 版本,无法证明 PHP-FPM、Apache 模块或其他 Web 服务进程使用了相同的构建版本。服务重载或重启方式取决于所选集成方案和本地配置;请遵循部署环境的文档化流程,不要套用通用命令。

使用 Software Collections 安装 PHP 7.4

Software Collections(SCL)曾是在部分 Enterprise Linux 系统上提供备用软件集合的一种历史方式。比较独立 PHP 环境与系统级软件包变更时,可以调查这种方案;但本文未验证特定 CentOS 7 安装是否提供 PHP 7.4 集合或相关软件包。

选择此方案前,请查阅适用于目标主机的文档,确认该集合是否可用及其生命周期。弄清交互式命令、定时任务和 Web 服务器如何选择其可执行文件及配置。不要假设安装集合后就会自动启用、隔离所有依赖,或能让同一个应用安全地同时使用两个版本。请在暂存环境中测试实际应用和部署配置。

从源码编译 PHP 7.4

从源码构建 PHP 曾是需要控制构建配置的管理员可考虑的另一种历史方案。这需要兼容的编译工具链、库、构建选项、配置文件和经过规划的安装布局。具体要求和选项取决于 PHP 源码版本及主机环境。

提供的资料未验证 PHP 7.4 的源码构建流程,因此本文没有可供复制的命令或配置标志。请查阅与确切源码版本和操作系统相符的文档,规划构建的维护和更新方式,并在使用前测试生成的二进制文件及其与应用的集成。自定义构建还需要明确的所有权和回滚方案;它不会自动替换系统 PHP,也不会自动配置 Web 服务器使用该构建。

验证安装并排查问题

检查 CLI 安装时,请明确指定 PHP 可执行文件,并记录其路径和版本。shell 查询命令 command -v php 可以显示当前 shell 解析到的 php 可执行文件。随后,请通过应用自身的部署和监控流程检查其使用的运行时。CLI 检查成功,并不能证明 Web 请求、PHP-FPM 池或定时任务使用了相同版本。

运行以下示例:
本节中的代码以及显示的标签或输出仍为英文。

<?php
echo "PHP CLI is available\n";

这个简短的 PHP 程序展示 PHP 进程输出的内容。它不会报告已安装的版本,也不能证明 Web 服务器使用了相同的 PHP 运行时。资料中没有此示例的执行结果,因此这里不展示任何实际观察到的输出。

如果报告的 CLI 版本与预期不符,请检查可执行文件路径和 shell PATH,再与预期的软件包或构建布局对照。如果命令行和 Web 应用的行为不同,请检查 Web 服务器或 PHP-FPM 配置,以及实际处理请求的进程。重载或重启服务前,请确认部署环境使用的服务及其配置,并遵循相应的变更流程。

常见问题

如何查看当前 PHP 版本?

运行 php -v,即可显示当前 shell 解析到的 CLI 可执行文件版本。使用 command -v php 查看其路径。这些检查无法确定 Web 服务器或其他进程使用的 PHP 构建版本。

在生产服务器上升级 PHP 安全吗?

版本变更可能影响应用行为及其依赖。安排生产环境变更前,请在暂存环境中测试计划好的变更,备份相关配置和数据,并准备经过验证的恢复流程。现有资料无法证明任何特定升级流程对你的系统都是安全的。

升级到 PHP 7.4 有什么好处?

与更早的 PHP 7 版本相比,PHP 7.4 引入了语言和运行时方面的变化。这些变化是否有利于某个应用,取决于其代码、依赖、工作负载和支持要求。PHP 7.4 是历史版本,不应将其视为当前的安全或支持建议。

我可以在 CentOS 上运行多个 PHP 版本吗?

这取决于特定系统可用的存储库、软件集合、构建布局和 Web 服务器集成方式。SCL 和自定义构建曾是可供调查的历史方案,但它们的存在并不能保证多个版本可以并行运行或彼此隔离。依赖多版本运行前,请先验证受支持的配置。

如果我的应用与 PHP 7.4 不兼容,该怎么办?

先在测试中找出不兼容的代码或依赖,再查阅其维护者提供的兼容性指南。你可能需要更新应用或依赖、选择受支持的运行时,或暂缓变更并规划修复工作。不要假设不受支持的运行时可以长期留在生产环境中。

总结

对于 CentOS 7 系统,研究迁移至 PHP 7.4 时,可以比较 Remi 存储库、Software Collections 和源码编译这些历史方案。现有资料未验证特定版本的命令、软件包或构建设置,因此请针对确切环境查阅权威文档并确认每项细节。盘点当前的 CLI 和应用运行时,在暂存环境中测试兼容性和恢复流程,并将 Web 服务配置与命令行版本分开验证。