Rocky 9 使用 Remi 仓库安装 PHP 8.5

2026 年 10 月 21 日, PHP 接连曝出两个高危漏洞 (CVE-2026-109618、CVE-2026-109619), 未经身份验证的远程攻击者可利用这些漏洞执行任意代码。这也迫使不少网站再次升级 PHP 版本, 以修复漏洞并降低安全风险。

这些年, 关于「PHP 已经凉透了」的说法一直不绝于耳。结果, CVE-2026-109618 和 CVE-2026-109619 一出, 大半个互联网直接把网线拔了。

安装 PHP 8.5

PHP 8.5 可以通过 Remi 仓库使用 yum 安装。除非有特殊需求, 否则不需要自行编译安装, 直接使用 RPM 软件包即可完成 PHP 及相关扩展的安装与配置。

添加仓库

首先, 安装 EPEL 仓库并启用 CRB 仓库, 然后安装 Remi 仓库

yum install epel-release
yum config-manager --set-enabled crb
yum install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

完成后, 即可使用 Remi 仓库提供的 PHP 8.5 软件包

安装 PHP

执行以下命令, 安装 PHP 8.5 和 PHP-FPM

yum install php85 php85-php-fpm

Remi 提供的多版本 PHP 软件包采用独立的命名空间和安装路径, 因此可以在同一系统中同时安装多个 PHP 版本, 互不影响。

搜索可用的 PHP 扩展

安装 PHP 扩展前, 可以先搜索 Remi 仓库中提供的 PHP 8.5 相关软件包

yum search php85 | more

也可以通过 egrep 筛选常见的扩展, 例如 FPM、GD、MySQL 和 Memcached

yum search php85 | egrep 'fpm|gd|mysql|memcache'

php85-php-fpm.x86_64 : PHP FastCGI Process Manager
php85-php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php85-php-mariadb-mysqlnd-ed25519.x86_64 : MariaDB ed25519 authentication plugin for mysqlnd
php85-php-mariadb-mysqlnd-parsec.x86_64 : MariaDB parsec authentication plugin for mysqlnd
php85-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php85-php-pecl-memcache.x86_64 : Extension to work with the Memcached caching daemon
php85-php-pecl-memcached.x86_64 : Extension to work with the Memcached caching daemon
php85-php-pecl-mysql.x86_64 : MySQL database access functions
php85-php-pecl-mysqlnd-krb.x86_64 : Kerberos authentication plugin for mysqlnd

安装 PHP 扩展

根据应用程序的实际需求, 安装 PHP 及相关扩展

yum install php85 php85-php-devel php85-php-fpm php85-php-gd php85-php-json php85-php-mbstring php85-php-mysqlnd php85-php-xml php85-php-opcache

另外, php85-php-devel 主要用于开发和编译 PHP 扩展, 一般 PHP 应用不需要安装

检查 PHP 版本和模块

安装完成后, 可以使用以下命令查看 PHP 版本及已加载的模块

php85 --version
php85 --modules

配置 PHP-FPM

PHP-FPM 负责处理 PHP 请求, Nginx 则通过 FastCGI 协议将 PHP 请求转发给 PHP-FPM

检查 PHP-FPM 配置

Remi 安装的 PHP 8.5 使用独立的配置目录, 默认配置文件为

/etc/opt/remi/php85/php-fpm.d/www.conf

可以执行以下命令, 检查 PHP-FPM 的运行用户、监听地址及相关参数

grep -E '^(user|group|listen|listen\.owner|listen\.group|listen\.mode|listen\.acl_users|pm) *=' /etc/opt/remi/php85/php-fpm.d/www.conf

user = apache
group = apache
listen = /var/opt/remi/php85/run/php-fpm/www.sock
listen.acl_users = apache
pm = dynamic

这里需要注意两个不同的权限问题

  • user 和 group: 指定 PHP-FPM 工作进程运行时使用的用户和用户组
  • listen.acl_users: 指定允许访问 PHP-FPM Unix Socket 的用户

不必为了让 Nginx 使用 PHP-FPM, 就将 PHP-FPM 的运行用户修改为 nginx。保留 apache 用户兼容 Remi 默认的 PHP Session、OPcache 和其他运行目录权限

允许 Nginx 访问 PHP-FPM Socket

如果 Nginx 使用 nginx 用户运行, 可以编辑 PHP-FPM 配置文件

listen.acl_users = apache, nginx

这样既可以保留原有的 apache 用户访问权限, 也允许 nginx 用户访问 PHP-FPM 的 Unix Socket

启动 PHP-FPM

完成配置后, 设置 PHP-FPM 开机自动启动并立即启动服务

systemctl enable --now php85-php-fpm
systemctl status php85-php-fpm

# 修改 PHP-FPM 配置后, 可以执行以下命令重新加载配置
systemctl restart php85-php-fpm

配置 Nginx

PHP-FPM 启动后, 需要在 Nginx 中配置 FastCGI 转发, 使 Nginx 能够将 PHP 请求交给 PHP-FPM 处理

在对应的 server 配置块中添加以下内容

server {
    .... # 其他配置参数

    location ~ \.php$ {
        try_files $uri =404;

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/opt/remi/php85/run/php-fpm/www.sock;
    }
}

重启 Nginx

保存配置后, 先检查 Nginx 配置是否存在语法错误

nginx -t

确认检查通过后, 完全重启服务

systemctl restart nginx

测试 PHP 配置

完成 PHP-FPM 和 Nginx 的配置后, 可以通过 phpinfo() 页面测试 PHP 是否能够正常运行

在网站根目录下创建 phpinfo.php 文件, 写入以下内容

<?php
  phpinfo();
?>

如果页面正常显示 PHP 版本、编译参数和已加载模块等信息, 说明 Nginx 与 PHP-FPM 的配置已经生效。

测试完成后, 请立即删除 phpinfo.php 文件。 该页面会暴露 PHP 环境、扩展和服务器配置等信息, 不应长期公开在生产环境中。


原文

Remi’s RPM repository - Configuration wizard
Install PHP 8.5 on Rocky Linux 10 / AlmaLinux 10 / RHEL 10

最后更新于 2026-10-25