CentOS是否已官方发布PHP 7?按维基指引无法从PHP5.4升级求助
咱们先把核心问题说清楚:CentOS 7 的默认官方基础仓库(比如base、updates这些)确实没有PHP 7.x 版本——系统自带的是PHP 5.4,这是为了保证系统核心组件的稳定性(毕竟很多系统工具依赖这个老版本)。你在维基里看到的“官方版本”,其实是指CentOS官方维护的Software Collections (SCL) 仓库,这个仓库专门用来提供更新版本的软件包,属于官方支持的渠道,但它不是默认启用的基础仓库,所以容易和默认仓库混淆。
至于你看到的2年前的教程说“依赖第三方源”,其实也没错:当时SCL的普及度没那么高,很多用户会选择第三方源来装PHP7;而SCL因为不是默认仓库,有时候会被误归为“第三方”,但实际上它是CentOS官方团队维护的,稳定性更有保障。
你按照维基指引升级失败,大概率是踩了SCL的几个常见坑,我给你梳理下:
没正确启用SCL仓库
要装SCL里的PHP7,第一步得先把SCL仓库启用:
针对CentOS 7,执行这条命令就行:sudo yum install centos-release-scl这个包会自动帮你添加SCL的仓库配置,不用手动改文件。
SCL的PHP是并行安装,不会替换系统默认的PHP5.4
SCL的设计是为了不破坏系统默认环境,所以安装的PHP7和系统自带的PHP5.4是共存的。安装完后你得手动切换环境才能用PHP7:
比如你要装PHP 7.2(SCL里有7.1、7.2、7.3等多个版本可选),先执行安装命令:sudo yum install rh-php72 rh-php72-php-fpm rh-php72-php-mysqlnd安装好后,临时启用PHP7.2环境可以用:
scl enable rh-php72 bash要是想永久启用(比如给当前用户),就把下面这行加到你的
~/.bashrc或者~/.bash_profile里:source /opt/rh/rh-php72/enable下次登录就自动用PHP7.2了。
搞错了包名
SCL里的PHP包是带前缀的,比如rh-php72,不是默认的php,所以不能直接用yum install php来装SCL的PHP7,必须指定带前缀的完整包名。
另外补充一句:如果你觉得SCL的操作有点麻烦,也可以用第三方源比如Remi,它的PHP版本更新更及时,但SCL胜在官方支持,稳定性更适配CentOS系统。
内容的提问来源于stack exchange,提问作者user9644880




