当前位置: 首页 > news >正文

PHP 8.0 升级到 PHP 8.1

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:9000fastcgi_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.1dnf install php php-cli php-fpm php-mysqlnd
5. 重启 PHP-FPMsystemctl restart php-fpm
6. 测试 PHP 版本php -v

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

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

http://www.lryc.cn/news/592743.html

相关文章:

  • 机器学习17-Mamba
  • 2025年UDP应用抗洪指南:从T级清洗到AI免疫,实战防御UDP洪水攻击
  • 从0开始学习R语言--Day50--ROC曲线
  • C语言—如何生成随机数+原理详细分析
  • 系统IO对于目录的操作
  • 服务器内存满了怎么清理缓存?
  • 多线程-4-线程池
  • 从零构建监控系统:先“完美设计”还是先“敏捷迭代”?
  • 内存数据库的持久化与恢复策略:数据安全性与重启速度的平衡点
  • 数据结构-3(双向链表、循环链表、栈、队列)
  • SGLang 推理框架核心组件解析:请求、内存与缓存的协同工作
  • 【PTA数据结构 | C语言版】左堆的合并操作
  • LS-DYNA分析任务耗时长,如何避免资源浪费与排队?
  • Machine Learning HW2 report:语音辨识(Hongyi Lee)
  • Glary Utilities(系统优化工具) v6.20.0.24 专业便携版
  • 【Python】一些PEP提案(三):with 语句、yield from、虚拟环境
  • [FDBUS4.2] watcher的使用
  • 利用五边形几何关系计算cos36°及推导黄金比例
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | NotesApp(便签笔记组件)
  • 深入理解 Spring:事务管理与事件机制全解析
  • 如何将本地Git仓库推送到远程仓库的一个文件中并保留Commit记录
  • 借助AI学习开源代码git0.7之三git-init-db
  • RoboBrain 2.0(具身智能论文阅读)
  • Deep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurring 论文阅读
  • Visual Studio C++编译器优化等级详解:配置、原理与编码实践
  • 【iOS】消息传递和消息转发
  • gitlab-runner配置问题记录
  • 洞见AI时代数据底座的思考——YashanDB亮相2025可信数据库发展大会
  • 【C++】——类和对象(中)——默认成员函数
  • LVS(Linux Virtual Server)详细笔记(实战篇)