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

相关推荐
ServBay4 小时前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954486 小时前
CTF 伪协议
php
BingoGo3 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack3 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo4 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack4 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack6 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理6 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php