PHP 8.0 升级到 PHP 8.1

CentOS Stream 9 上将 PHP 8.0 升级到 PHP 8.1 ,推荐使用 Remi 仓库(提供多版本 PHP 支持)。以下是详细步骤:


1. 确认当前 PHP 版本

bash 复制代码
php -v

输出示例

复制代码
PHP 8.0.x (cli) (built: ...)

如果显示 8.0.x,说明当前运行的是 PHP 8.0。


2. 安装 Remi 仓库(如果尚未安装)

Remi 仓库提供 PHP 8.1、8.2、8.3 等多个版本,适用于 CentOS/RHEL 9。

(1)下载 Remi 仓库 RPM 包

bash 复制代码
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

或(如果 dnf 不可用,用 yum):

bash 复制代码
yum install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

(2)验证 Remi 仓库是否安装成功

bash 复制代码
dnf repolist | grep remi

输出示例

复制代码
remi-safe               Safe Remi's RPM repository for Enterprise Linux 9 - x86_64
remi-php81              Remi's PHP 8.1 RPM repository for Enterprise Linux 9 - x86_64

3. 切换 PHP 版本(从 8.0 → 8.1)

(1)重置当前 PHP 模块(如果使用 dnf module 管理)

bash 复制代码
dnf module reset php

输出示例

复制代码
Resetting module 'php' to default state.

(2)启用 Remi 的 PHP 8.1 模块

bash 复制代码
dnf module enable php:remi-8.1 -y

输出示例

复制代码
Enabling module streams:
 php remi-8.1

(3)安装 PHP 8.1 及相关扩展

bash 复制代码
dnf install -y php php-cli php-fpm php-mysqlnd php-json php-opcache php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-zip

可选扩展(根据需求安装):

bash 复制代码
dnf install -y php-redis php-mongodb php-swoole php-imagick

4. 检查 PHP 8.1 是否安装成功

bash 复制代码
php -v

输出示例

复制代码
PHP 8.1.x (cli) (built: ...)

如果显示 8.1.x,说明升级成功!


5. 更新 PHP-FPM(如果使用 FPM)

(1)检查 PHP-FPM 服务

bash 复制代码
systemctl status php-fpm

如果服务名是 php-fpm(默认),则:

bash 复制代码
systemctl restart php-fpm

如果服务名是 php80-php-fpm(旧版本),则:

bash 复制代码
systemctl stop php80-php-fpm
systemctl disable php80-php-fpm
systemctl enable --now php-fpm  # 启用新版本

(2)检查 PHP-FPM 版本

bash 复制代码
ps aux | grep php-fpm

输出示例

复制代码
root      1234  0.0  0.1 234567 8901 ?        Ss   10:00   0:00 php-fpm: master process (/etc/php-fpm.conf)

确认进程使用的是 php-fpm(8.1 版本)。


6. 更新 Web 服务器配置(Nginx/Apache)

(1)Nginx 配置

确保 fastcgi_pass 指向正确的 PHP-FPM 套接字或端口:

nginx 复制代码
location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm/www.sock;  # 或 127.0.0.1:9000
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

测试 Nginx 配置并重启

bash 复制代码
nginx -t && systemctl restart nginx

(2)Apache 配置

确保 mod_phpFPM 配置正确:

apache 复制代码
<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

重启 Apache

bash 复制代码
systemctl restart httpd

7. 清理旧版本 PHP 8.0(可选)

如果确认不再需要 PHP 8.0,可以卸载:

bash 复制代码
dnf remove php80 php80-php-cli php80-php-fpm php80-php-mysqlnd

注意

  • 如果使用 dnf module 管理,也可以直接禁用 PHP 8.0 模块:

    bash 复制代码
    dnf module disable php:8.0 -y

8. 常见问题解决

Q1: dnf module enable php:remi-8.1 报错?

  • 可能是 Remi 仓库未正确安装,重新运行:

    bash 复制代码
    dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Q2: PHP 8.1 安装后,某些扩展缺失?

  • 使用 dnf search php81- 查找可用扩展:

    bash 复制代码
    dnf search php81-

    然后安装:

    bash 复制代码
    dnf install -y php81-php-redis php81-php-mongodb

Q3: 升级后网站报错?

  • 检查 PHP 错误日志:

    bash 复制代码
    tail -f /var/log/php-fpm/error.log  # 或 /var/log/httpd/error_log
  • 可能是代码兼容性问题(PHP 8.1 移除了部分函数,如 create_function())。


总结

步骤 命令
1. 确认当前 PHP 版本 php -v
2. 安装 Remi 仓库 dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
3. 启用 PHP 8.1 模块 dnf module enable php:remi-8.1 -y
4. 安装 PHP 8.1 dnf install php php-cli php-fpm php-mysqlnd
5. 重启 PHP-FPM systemctl restart php-fpm
6. 测试 PHP 版本 php -v

这样,你的服务器就成功从 PHP 8.0 升级到 PHP 8.1 了! 🚀

遇到redis版本冲突解决办法:
https://blog.csdn.net/zhezhebie/article/details/149451177

相关推荐
Hello.Reader4 分钟前
Go-Redis 入门与实践从连接到可观测,一站式掌握 go-redis v9**
开发语言·redis·golang
007php00713 分钟前
使用LNMP一键安装包安装PHP、Nginx、Redis、Swoole、OPcache
java·开发语言·redis·python·nginx·php·swoole
枯萎穿心攻击20 分钟前
响应式编程入门教程第五节:Unity 生命周期与资源管理中的响应式编程
开发语言·unity·架构·c#·游戏引擎
Mr_Xuhhh26 分钟前
Qt窗口(2)-工具栏
java·c语言·开发语言·数据库·c++·qt·算法
艾莉丝努力练剑1 小时前
【数据结构与算法】数据结构初阶:详解顺序表和链表(五)——双向链表
c语言·开发语言·数据结构·学习·算法
算法_小学生1 小时前
Hinge Loss(铰链损失函数)详解:SVM 中的关键损失函数
开发语言·人工智能·python·算法·机器学习·支持向量机
YUJIANYUE2 小时前
纯前端html实现图片坐标与尺寸(XY坐标及宽高)获取
开发语言·前端·javascript
kyle~2 小时前
C++---cout、cerr、clog
开发语言·c++·算法
thginWalker3 小时前
拓扑排序/
java·开发语言
MediaTea3 小时前
Python 库手册:re 正则表达式模块
开发语言·python·正则表达式