CentOS上PHP 8.3未生效的根本原因是未启用Remi模块流,需先执行dnf module reset php和dnf module enable php:remi-8.3,再重装php及带php83-前缀的扩展,确保php --ini指向/etc/opt/remi/php83/php.ini且php-fpm服务使用php83-php-fpm。

CentOS 上装 PHP 8.3,用 Remi 源是目前最稳妥、兼容性最好、扩展最全的方式;但直接 dnf install php 很可能装出 7.4 或 8.0,甚至报错「nothing provides redhat-release >= 8.8」——问题不在 PHP 本身,而在源没对齐、模块没启用、配置路径没切过去。
为什么 php -v 显示的不是 8.3?
常见现象:明明执行了安装命令,php -v 却输出 PHP 7.4.33 或报错 command not found。根本原因是:php 包由系统默认模块提供,Remi 的 PHP 8.3 是以「模块流(module stream)」形式注入的,不显式启用就不可见。
- CentOS 8/9 必须先运行
dnf module reset php清除默认绑定 - 再执行
dnf module enable php:remi-8.3(注意不是remi-php83,也不是php83) - 启用后必须重装
php包,不能只靠dnf update——否则 CLI 和 FPM 仍走旧路径 -
php --ini输出的Loaded Configuration File应为/etc/opt/remi/php83/php.ini,不是/etc/php.ini
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm 报错「nothing provides redhat-release >= 8.8」
这是 CentOS 8 Stream 用户最常卡住的地方:Remi 8.8+ rpm 包依赖 centos-stream-release >= 8,而最小化安装的 CentOS 8 可能没装这个包。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 先执行
dnf install -y centos-release-stream补齐元信息 - 再装 Remi 源:
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm - 如果用的是 CentOS 7,别硬套 8 的链接——改用
https://rpms.remirepo.net/enterprise/remi-release-7.rpm - 装完检查
/etc/yum.repos.d/remi.repo是否存在且 enabled=1
装完 PHP 8.3,Web 服务里还是跑的旧版本?
Apache 或 Nginx 调用的不是 CLI 的 php,而是通过 libphp.so 或 php-fpm 进程通信。若没配对,页面 phpinfo() 仍显示老版本。
- 确认
php-fpm服务启动的是 Remi 版本:systemctl status php-fpm查看 Loaded 路径是否含php83 - Nginx 配置中
fastcgi_pass应指向127.0.0.1:9000(默认 php-fpm 监听端口),且确保php-fpm服务已systemctl start php83-php-fpm(注意包名前缀) - Apache 用户需禁用旧
libphp,改用proxy_fcgi+php-fpm,不能直接 LoadModule php7_module - 测试时用
curl -I http://localhost/info.php看响应头X-Powered-By,比浏览器缓存更准
真正容易被忽略的点是:Remi 的 PHP 8.3 安装后,所有扩展包(如 php-mysqlnd)也必须带 php83- 前缀或来自 remi-8.3 模块流,否则会加载失败或版本不匹配。别只盯着 php 主包,扩展才是 runtime 崩溃的高发区。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










