必须通过Remi仓库精准切换:先安装epel-release和remi-release-7.rpm,禁用其他PHP源并启用remi-php81与remi-safe,卸载php-pecl-apcu-bc等不兼容扩展,安装php81前缀包,最后配置Nginx/Apache指向php81-php-fpm服务。

在 CentOS 7 中将 PHP 7.3 升级到 PHP 8.1,不能直接用 yum update php*,因为默认源不提供 PHP 8.1,且版本跨度大、ABI 和扩展依赖完全不兼容。必须通过 Remi 仓库精准切换,同时清理冲突包、启用底层依赖源,并验证环境就绪。
一、停用旧源,启用 Remi PHP 8.1 仓库
先确保 EPEL 和 Remi 基础仓库已安装:
sudo yum install -y epel-releasesudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpmsudo yum install -y yum-utils
关键一步:禁用所有其他 PHP 流,只启用 PHP 8.1 及其依赖源:
sudo yum-config-manager --disable 'remi-php*'sudo yum-config-manager --enable remi-php81 remi-safe
注意:remi-safe 必须启用——它提供 PHP 8.1 所需的 libonig.so.105、libgd.so.103 等底层库,缺它会报依赖错误。
二、卸载不兼容的旧扩展
PHP 8.1 已移除多个旧扩展接口,强行保留会导致安装失败或服务崩溃:
sudo yum remove -y php-pecl-apcu-bc php-pecl-mcrypt php-pecl-redis
说明:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
-
php-pecl-apcu-bc是为兼容 PHP 5.x APC 设计的,PHP 8.1 不再支持; -
php-pecl-mcrypt已从核心移除,应改用sodium或openssl函数; -
php-pecl-redis在 PHP 8.1 中被php-pecl-redis5替代,二者不可共存。
三、安装 PHP 8.1 及常用扩展
推荐使用带版本前缀的包名(更安全,避免与系统残留冲突):
sudo yum install -y php81 php81-php-fpm php81-php-cli php81-php-mysqlndsudo yum install -y php81-php-gd php81-php-mbstring php81-php-curl php81-php-xml php81-php-opcache php81-php-json php81-php-zip php81-php-bcmath php81-php-dom
安装后,确认主命令路径:
- CLI 使用:
/usr/bin/php81(不是/usr/bin/php) - FPM 服务名:
php81-php-fpm,启动命令:sudo systemctl start php81-php-fpm
四、切换 Web 服务并验证
根据你用的是 Nginx 还是 Apache,调整 FastCGI 或模块指向:
-
Nginx:修改站点配置中
fastcgi_pass指向unix:/run/php-fpm/www.sock(确保php81-php-fpm的www.conf中listen路径一致); -
Apache:禁用
php7_module,启用proxy_fcgi+sethandler转发至 PHP-FPM。
最后验证:
-
php81 -v→ 显示PHP 8.1.x -
php81 -m | grep -E "(gd|mbstring|opcache)"→ 确认扩展加载正常 - 访问
phpinfo()页面,检查 Server API 是否为FPM/FastCGI,且版本正确
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










