PHP 8.0 升级到 PHP 8.1

发布于:2025-07-21 ⋅ 阅读:(17) ⋅ 点赞:(0)

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


1. 确认当前 PHP 版本

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 包

dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

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

yum install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

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

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 管理)

dnf module reset php

输出示例

Resetting module 'php' to default state.

(2)启用 Remi 的 PHP 8.1 模块

dnf module enable php:remi-8.1 -y

输出示例

Enabling module streams:
 php remi-8.1

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

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

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

dnf install -y php-redis php-mongodb php-swoole php-imagick

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

php -v

输出示例

PHP 8.1.x (cli) (built: ...)

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


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

(1)检查 PHP-FPM 服务

systemctl status php-fpm

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

systemctl restart php-fpm

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

systemctl stop php80-php-fpm
systemctl disable php80-php-fpm
systemctl enable --now php-fpm  # 启用新版本

(2)检查 PHP-FPM 版本

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 套接字或端口:

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 配置并重启

nginx -t && systemctl restart nginx

(2)Apache 配置

确保 mod_phpFPM 配置正确:

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

重启 Apache

systemctl restart httpd

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

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

dnf remove php80 php80-php-cli php80-php-fpm php80-php-mysqlnd

注意

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

8. 常见问题解决

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

  • 可能是 Remi 仓库未正确安装,重新运行:
    dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
    

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

  • 使用 dnf search php81- 查找可用扩展:
    dnf search php81-
    
    然后安装:
    dnf install -y php81-php-redis php81-php-mongodb
    

Q3: 升级后网站报错?

  • 检查 PHP 错误日志:
    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


网站公告

今日签到

点亮在社区的每一天
去签到