在 CentOS 7 上将 PHP 和 Nginx 升级到最新版本,由于 CentOS 7 官方源(Base)中的版本非常老旧(PHP 5.4 和 Nginx 1.12 左右),我们必须引入 Remi 源(针对 PHP)和 Nginx 官方源。

需要特别注意的是,CentOS 7 官方已于 2024 年 6 月 30 日停止维护(EOL),官方的 Base 源可能已经失效。如果你的系统尚未更换 CentOS 7 的归档源(Vault 源),升级前请确保你的 yum 还能正常工作。

以下是完整的升级步骤:

一、 升级 Nginx 到最新稳定版 (Mainline 或 Stable)
CentOS 7 自带的 EPEL 源版本较旧,直接使用 Nginx 官方维护的 RHEL/CentOS 7 仓库可以获取最新版。

  1. 添加 Nginx 官方源
    创建并编辑 Nginx 源配置文件:

Bash
vi /etc/yum.repos.d/nginx.repo
粘贴以下内容(这里推荐使用最新稳定版 stable,如果追求绝对最新功能,可以将下文中的 stable 改为 mainline):

Ini, TOML
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

  1. 停止旧服务并升级
    为了防止升级期间配置文件冲突或服务异常,建议先备份配置:

Bash

备份旧配置(以防万一)

cp -r /etc/nginx /etc/nginx_bak

升级 Nginx

yum clean all
yum install -y nginx

启动并设置开机自启

systemctl daemon-reload
systemctl restart nginx
systemctl enable nginx

  1. 验证版本
    Bash
    nginx -v
    (此时应该显示为最新的 1.26.x 或更高版本)

二、 升级 PHP 到最新版 (PHP 8.2 或 8.3)
在 2026 年,PHP 的主流稳定版为 8.2 / 8.3 / 8.4。由于 CentOS 7 自身编译环境限制,Remi 源是目前在 CentOS 7 上安全运行最新 PHP 的唯一可靠途径。

  1. 安装 EPEL 和 Remi 仓库
    Bash

    安装 EPEL 源(如果已安装可跳过)

    yum install -y epel-release

安装 Remi 源(专门针对 CentOS 7 的版本)

yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm

安装 yum 管理工具

yum install -y yum-utils

  1. 清理旧版 PHP(如果之前装过)
    如果系统里有旧的 PHP 5.x,直接升级容易起冲突,建议先卸载旧包:

Bash
yum remove -y php php-common php-cli php-fpm

  1. 启用最新 PHP 分支并安装
    使用 yum-config-manager 激活你想要的 PHP 版本。这里以 PHP 8.3 为例(如果想装 8.2 或 8.4,只需将下面命令中的 83 改为 82 或 84):

Bash

启用 PHP 8.3 仓库

yum-config-manager --enable remi-php83

安装 PHP 8.3 核心及常用扩展(与 Nginx 配合必须安装 php-fpm)

yum install -y php php-cli php-fpm php-common php-mysqlnd php-gd php-mbstring php-xml php-json php-curl php-zip

安装 PHP 的 MySQL 核心驱动与 PDO 扩展
yum install -y php-mysqlnd php-pdo

  1. 启动 PHP-FPM
    Bash

    启动服务

    systemctl start php-fpm

    设置开机自启

    systemctl enable php-fpm

  2. 验证版本
    Bash
    php -v
    三、 避坑指南与 Nginx 配置衔接
    升级完成后,由于新版 PHP 的执行用户、用户组或者 Socket 路径可能与旧版不同,请务必核对以下两点:

检查 PHP-FPM 运行用户:
打开 /etc/php-fpm.d/www.conf,确保 user 和 group 与你的 Nginx 运行用户一致(通常 Nginx 官方源的用户名为 nginx,我的名字都为apache):

Ini, TOML
user = nginx
group = nginx
修改后记得重启:systemctl restart php-fpm

检查 Nginx 连接 PHP 的方式:
看一眼 /etc/php-fpm.d/www.conf 里的 listen 选项:

如果是 listen = 127.0.0.1:9000,则 Nginx 配置文件中应写 fastcgi_pass 127.0.0.1:9000;

如果是 listen = /run/php-fpm/www.sock,则 Nginx 中应写 fastcgi_pass unix:/run/php-fpm/www.sock;

标签: none

添加新评论