作为一个PHP开发,使用最新版PHP体验新功能是基本技术信仰。最新版PHP 8就要发布了,你还在从源码编译安装吗?对于CentOS系统,其实有更简单方便的安装方法。本文介绍使用Remi源安装最新版PHP 7和PHP8。
Remi源介绍
前文 常用yum源整理 已经介绍过Remi源,其官网是 http://rpms.remirepo.net/,维护了大量PHP软件包。Remi源的主要目标是提供最新版的PHP安装包,并对PHP提供全方位支持。基于这个目标,Remi源有如下特点:
1. 最快速度提供最新版PHP安装包,包括候选版的PHP 8。Remi源的安装包发布时间可能比 PHP官网 发布时间还早,例如最新版的 PHP 7.4.12 和 PHP 8.0 RC3,Remi源的包比官网新闻发布时间都早上一两天:
Remi源的PHP 7.4.12安装包发布时间:
以及最新版PHP 8.0 RC3发布时间:
Remi官方解释了为什么比官宣更早:PHP官方给源码打上分支标签后,会给各个源两天构建和测试时间,以便官方宣布时各个源已经提供了安装包。对于Remi源来说,其维护者目前专职做PHP打包,因此能第一时间提供安装包。
2. 提供了一些不兼容fedora政策的软件包,以及对一些过时的包提供安全更新。本人暂不清楚这指的哪些包,但是Remi源提供了最新版的Composer 2、Redis 5和Redis 6,这很给力;
3. 维护了一些不符合RHEL安全政策的软件包,例如不再被官方维护的PHP 5.4-5.6、PHP 7.1等。
尽管SCL、IUS等源也提供新版PHP,但不会像Remi这样紧紧跟随PHP的步伐。对于使用CentOS系统的PHP开发者,Remi源能让你最快速度用上最新版PHP及相关软件包,强烈推荐使用。
安装Remi源
Remi依赖于EPEL源,因此首先要安装EPEL(EPEL几乎是必不可少的yum/dnf源,许多发行版其实已经内置):
yum install -y epel-release # CentOS 8用户可以使用dnf安装
接着安装Remi源。Remi源在全球有许多镜像,国内推荐使用清华大学的镜像源安装(官网首页列出了许多源,清华源是国内镜像源代表):
# CentOS 8安装 yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-8.rpm # CentOS 7安装 yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm # CentOS 6将于11月30号(本月底)停止维护,不再建议使用 yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-6.rpm
此外建议安装 yum-utils
包,提供启用、禁用源等实用功能:
yum install yum-utils
安装好Remi源后,/etc/yum.repos.d
目录下多了 remi.repo
, remi-safe.repo
等文件。对于CentOS 6/7,remi-phpxx文件容易理解,是对应PHP版本的源配置文件;CentOS 8默认使用dnf包管理工具,支持模块(module)安装,多了remi-modular.repo
文件(但没有remi-phpxx.repo这些文件)。
Remi源的配置文件中,只有remi-safe是默认启用的。remi-safe如其名,其中的包都很安全,不会改变系统行为,其他源文件中的包则可能会影响系统环境。
下面介绍Remi源安装最新版PHP 7和PHP 8的方法,包括系统安装(影响系统环境)和多版本共存两种方式。
使用Remi源安装最新版PHP 7和PHP 8
系统安装即安装的PHP为系统默认的PHP版本,会覆盖已有的PHP版本;多版本共存则可在系统中安装多个PHP版本,可按照需要切换PHP版本。
系统安装(单版本安装)
系统安装方式会取代系统中已有的版本,但其安装和使用最简单。以安装最新版PHP 8.0 RC3为例,系统安装的操作为:
# CentOS 6/7安装最新版PHP 8 yum-config-manager --disable 'remi-php*' yum-config-manager --enable remi-php80 yum clean all yum install php php-fpm php-cli # 等一些额外PHP模块 # CentOS 8安装最新版PHP 8 dnf clean all dnf module reset php dnf module install php:remi-8.0 dnf install php-fpm php-cli # 等一些额外PHP模块
安装完成后,php -v
输出PHP版本信息如下:
PHP 8.0.0RC3 (cli) (built: Oct 27 2020 12:15:38) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
可以看到,最新版的PHP 8已经被成功安装到系统中。
上面的安装命令复杂难记?没关系,Remi源贴心的提供了安装向导。在向导页面中输入你的操作系统版本,要安装的PHP版本和安装方式,安装教程就出来了(本节对应default/single version安装方式):
系统安装方式简单,但是会替换系统中的PHP版本,不建议在线上使用。
多版本共存安装
系统安装其实是将对应PHP版本的源开启了(配置文件中的enabled改成了1),于是会替换系统版本,这是不safe的行为(remi-safe中的包则不会这样干)。鉴于此,Remi源提供了类似模块的安装方式,能让多PHP版本共存。
同样可以根据安装向导,得到多版本共存时最新版PHP 8的安装操作:
# CentOS 6/7安装最新版PHP 8 yum install php80 php80-php-fpm php80-php-cli # 等一些额外PHP模块,都以php80开头 # CentOS 8安装最新版PHP 8 dnf module install php80 dnf install php80-php-fpm php80-php-cli # 等一些额外PHP模块,都以php80开头
由于不是系统安装,安装好后无法直接通过php命令使用(会提示php命令不存在)。多版本安装时有两种PHP使用方式:
- 通过php80前缀的方式使用,例如
php80 -v
,输出和上文一致; - 通过Remi源的脚本开启,类似于module加载:
source /opt/remi/php80/enable
,接下来就可以直接用php了。
实践中推荐使用第二种方式,能方便的在多个版本中切换当前系统使用的PHP版本,也无需使用前缀。
如果你使用过SCL等源安装过软件,非系统安装的软件包和配置都在/opt目录中,前缀以rh、phpxx等开头。例如开启PHP8.0 FPM的开机自启:
systemctl enable php80-php-fpm
,系统安装方式则无需携带前缀。
总结
Remi源给使用CentOS及衍生系统的PHP开发者带来最新版的福音,不仅能让你用上最新版的PHP,还能让你简单方便的在系统中安装多个版本的PHP,同时简单快捷地切换PHP版本,因此是非常建议安装和使用的。
发表回复