将CentOS7上的PHP升级到5.6/7.0/7.1/7.2/7.3系列

首先

CentOS7系統中,目前可以默認安裝的PHP版本是5.4.16,截至2017年12月30日。

然而,除了5.4系統以外,PHP本身已經有5.6系統、7.0系統、7.1系統、7.2系統、7.3系統等多個版本發布,且在運行需求上,通常需要使用5.5系統以及7.0系統以上的PHP版本。

基於這個原因,本次考慮將CentOS7的PHP版本從5.4系統升級到更新的版本。我在網上搜尋了很多網站並參考了一些資料,但遇到了一些困難,因此在這裡將其作為提醒與紀錄。下面的操作過程以升級到7.1系統為例進行說明。

顺便提一下,关于PHP的核心部分:
5.6版本系列在2018年12月31日后,官方安全支持已经结束。
7.0版本系列在2018年12月08日后,官方安全支持已经结束。
7.1版本系列在2019年12月01日后,官方安全支持已经结束。
想要了解更详细的信息,请参考以下链接,查看PHP支持期限。
PHP发行日期和支持期限 – Qiita

升级前的环境概述

CentOS版本:CentOS Linux发布版本7.4.1708(核心)
Apache版本:服务器版本:Apache/2.4.6(CentOS)
MySQL版本:mysql版本15.1分发版5.5.56-MariaDB,用于Linux(x86_64),使用readline 5.1
PHP版本:PHP 5.4.16(命令行界面)

升级步骤

添加存储库

由于需要从非标准库中获取PHP,因此需要添加EPEL和REMI存储库(1)。

请执行以下命令中的任意一个【EPEL仓库】。

yum install epel-release
#または
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

执行以下REMI存储库命令

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

删除当前的PHP。

在升级PHP版本时,最终还是需要重新安装。因此,与其说是版本升级和更新,更接近于重新安装。
如果在/etc/php.ini等文件中对PHP进行了特殊设置,建议通过cp命令将其备份以防万一。

cp /etc/php.ini /etc/php.ini.bk

完成設置文件的備份等工作後,輸入以下指令。

yum remove php-*

這樣一來,PHP就死了。。。。

安装最新的PHP

從這裡開始安裝比標準版本更新的PHP版本。值得注意的是,並不是最新版本就一定好,要考慮到函數是否有變更,因此可以考慮安裝 5.6、7.0 或 7.1 版本。
選定版本後,執行以下指令進行安裝。

【如果是PHP5.6.x版本】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php56 php

【针对 PHP7.0.x 版本】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php70 php

【针对PHP 7.1.x版本】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php71 php

【对于PHP7.2.x】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php72 php

【对于PHP7.3.x版本的情况】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php73 php

只需要一个选项,用中文表述以下内容:

另外,–disablerepo=* 是一个必要的选项,它会暂时禁用所有仓库,只从 remi 获取 PHP。如果有这个选项,就可以顺利进行版本指定。
顺便说一下,如果不加这个选项输入命令,无论如何都会指定为 PHP5.4.x的版本。。。加上这个选项应该没有什么损失。(2)

= = = 2019-05-19 追記 = = = =
尽管使用了–disablerepo=* –enablerepo=remi,remi-php72等来指定仓库,但在依赖关系检查时仍然出现错误,可以尝试启用仓库以使其可以通过epel进行依赖关系检查,并尝试显式地使用–disablerepo=base来禁用只含有5.4系的base仓库。解决方法如下:
yum install –disablerepo=base –enablerepo=epel,remi,remi-safe,remi-php72 php

给 PHP 环境添加相关的包(还原到原始的 PHP 环境)。

使用上述的方法,已经安装了PHP核心。从这里开始,安装之前使用的相关包并恢复到原来的状态。虽然没有特别复杂的操作,但在安装上述的PHP核心时同时进行也是可以的。
下面的命令列出了主要的内容。可以删除不必要的内容,添加必要的内容并执行。

【对于PHP5.6.x版本】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php56 php-devel php-pear php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process

【对于PHP7.0.x版本】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php70 php-devel php-pear php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process

【在PHP7.1.x的情况下】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php71 php-devel php-pear php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process

【在PHP7.2.x版本中】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php72 php-devel php-pear php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process

【对于PHP7.3.x版本】

yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php73 php-devel php-pear php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process

恢复PHP设置

已经准备好上述所需的零件。最后恢复PHP的设置并完成。

参照事先备份的php.ini.bk文件进行恢复。
vim /etc/php.ini

最后

从PHP5.4.x升级到新版本,实际上只需重新安装而已。我觉得寻找相应的命令很麻烦。

我曾参考了其他各种网站,但只抽取了主要的那个(在搜索结果中排名第一的那个)。非常感谢。

(1) 在CentOS6/CentOS7上使用yum安装PHP5.6/PHP7 – Qiita网站
(2) 【CentOS7】尽管指定了enablerepo=remi-php56,仅从base获取PHP5.6【yum】 | 我这样的人….com ― ORENANTE.com ― … orz