在 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_php
或 FPM
配置正确:
<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