CentOS 7 默认 yum 源仅提供 PHP 5.4.16,因 Red Hat 策略不升级主版本;需启用 remi 仓库(如 remi-php74 或 remi-82)并禁用冲突源,配合 epel-release 和 yum-utils 安装指定 PHP 版本及扩展。

CentOS 7 默认的 yum 源里 PHP 版本太老(5.4),直接 yum install php 装不上 7.x 或 8.x —— 你得换源,不是“配置错了”,是原生源压根没提供。
为什么 yum install php 装的是 PHP 5.4?
CentOS 7 自带的 base 和 updates 仓库只维护与系统生命周期一致的旧版 PHP(5.4.16),安全更新到 2024 年就停了。这不是 bug,是 Red Hat 的策略:PHP 升级交给第三方仓库或 SCL。
- 直接运行
yum list php会看到php.x86_64 5.4.16-48.el7 -
php -v输出也确认是 5.4.x - 想装 7.4/8.0/8.1/8.2?必须启用额外仓库
推荐方案:启用 remi 仓库(最稳定、更新及时)
remi 是 CentOS/RHEL 生态最成熟的第三方 PHP 仓库,支持多版本共存,且提供 php 主包 + 扩展分包(如 php-mysqlnd、php-opcache)。
- 先安装 EPEL(remi 依赖它):
yum install epel-release -y
- 再安装 remi 仓库配置:
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
- 启用 PHP 7.4(示例):
yum-config-manager --enable remi-php74
- 现在装 PHP:
yum install php php-cli php-common php-opcache php-mysqlnd php-gd php-xml php-mbstring -y
注意:yum-config-manager 来自 yum-utils,若报错“command not found”,先 yum install yum-utils -y。
立即学习“PHP免费学习笔记(深入)”;
如果要装 PHP 8.2,步骤一样但仓库名不同
remi 对每个 PHP 大版本都单独建 repo,不能混用。PHP 8.2 需启用 remi-82,不是 remi-php82(后者不存在):
- 启用 8.2 主仓库:
yum-config-manager --enable remi-82
- 禁用其他 PHP repo(避免冲突):
yum-config-manager --disable remi-php74 remi-php80 remi-php81
- 安装:
yum install php php-cli php-fpm php-mysqlnd php-opcache -y
装完后 php -v 应输出 PHP 8.2.x;若还是 7.4,说明 remi-82 没生效,检查 yum repolist enabled | grep remi 是否有 remi-82。
别碰 webtatic 和手动编译(除非真有特殊需求)
webtatic 已停止维护(最后更新是 2020 年),其 PHP 包在 CentOS 7.9+ 上常因依赖冲突失败;手动编译虽然可控,但你要自己处理 libxml2、openssl、oniguruma 等底层依赖版本,升级和打补丁极其麻烦。
- 常见翻车点:
configure: error: off_t undefined; check your library configuration(缺glibc-devel) - 更隐蔽的问题:编译出来的
php-fpm无法被 systemd 正确管理,systemctl start php-fpm报Failed to start php-fpm.service: Unit php-fpm.service not found
remi 提供完整 systemd unit 文件、logrotate 配置、SELinux 策略,这些细节才是生产环境真正卡人的地方。











