CentOS7でPHP7.1をPHP7.3へバージョンアップする

# 概要

CentOS7 に remi-php71 から PHP7.1 がインストールされている環境で、PHP7.1をアンインストールしてから新たにPHP7.3をインストールします。
yumコマンド実行時のリポジトリ指定で--enablerepoを使用せず、デフォルトで remi-php71 および epel が有効になっている場合を想定しています。

# 手順

現在有効になっているリポジトリを確認します。
ここでは epel および remi-php71 が有効になっていることが確認できました。

```
$ yum repolist enabled
	Loaded plugins: fastestmirror, langpacks
	Loading mirror speeds from cached hostfile
	 * base: ftp.iij.ad.jp
	 * epel: mirrors.aliyun.com
	 * epel-debuginfo: mirrors.aliyun.com
	 * epel-source: mirrors.aliyun.com
	 * extras: ftp.iij.ad.jp
	 * remi-php71: ftp.riken.jp
	 * remi-safe: ftp.riken.jp
	 * updates: ftp.iij.ad.jp
	repo id               repo name                                           status
	base/7/x86_64         CentOS-7 - Base                                     10,097
	epel/x86_64           Extra Packages for Enterprise Linux 7 - x86_64      13,520
	epel-debuginfo/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 - De  2,805
	epel-source/x86_64    Extra Packages for Enterprise Linux 7 - x86_64 - So      0
	extras/7/x86_64       CentOS-7 - Extras                                      323
	mackerel/x86_64       mackerel-agent                                           4
	remi-php71            Remi's PHP 7.1 RPM repository for Enterprise Linux     434
	remi-safe             Safe Remi's RPM repository for Enterprise Linux 7 -  3,673
	updates/7/x86_64      CentOS-7 - Updates                                   1,117
	repolist: 31,973
```

remi-php71から導入されているパッケージを確認します。
php関連以外は導入されていないことが確認できました。

```
$ yum list installed | grep remi-php71
	php.x86_64                          7.1.33-4.el7.remi                @remi-php7
	php-bcmath.x86_64                   7.1.33-4.el7.remi                @remi-php7
	php-cli.x86_64                      7.1.33-4.el7.remi                @remi-php7
	php-common.x86_64                   7.1.33-4.el7.remi                @remi-php7
	php-gd.x86_64                       7.1.33-4.el7.remi                @remi-php7
	php-json.x86_64                     7.1.33-4.el7.remi                @remi-php7
	php-mbstring.x86_64                 7.1.33-4.el7.remi                @remi-php7
	php-mcrypt.x86_64                   7.1.33-4.el7.remi                @remi-php7
	php-mysqlnd.x86_64                  7.1.33-4.el7.remi                @remi-php7
	php-pdo.x86_64                      7.1.33-4.el7.remi                @remi-php7
	php-pecl-zip.x86_64                 1.17.0-1.el7.remi.7.1            @remi-php7
	php-process.x86_64                  7.1.33-4.el7.remi                @remi-php7
	php-tidy.x86_64                     7.1.33-4.el7.remi                @remi-php7
	php-xml.x86_64                      7.1.33-4.el7.remi                @remi-php7
```

php関連で導入されているパッケージを確認します。
remi-php71またはepelから導入されているパッケージがあることが確認できました。

```
$ yum list installed | grep php
	php.x86_64                          7.1.33-4.el7.remi                @remi-php71
	php-bcmath.x86_64                   7.1.33-4.el7.remi                @remi-php71
	php-cli.x86_64                      7.1.33-4.el7.remi                @remi-php71
	php-common.x86_64                   7.1.33-4.el7.remi                @remi-php71
	php-fedora-autoloader.noarch        1.0.0-1.el7                      @epel
	php-gd.x86_64                       7.1.33-4.el7.remi                @remi-php71
	php-json.x86_64                     7.1.33-4.el7.remi                @remi-php71
	php-mbstring.x86_64                 7.1.33-4.el7.remi                @remi-php71
	php-mcrypt.x86_64                   7.1.33-4.el7.remi                @remi-php71
	php-mysqlnd.x86_64                  7.1.33-4.el7.remi                @remi-php71
	php-pdo.x86_64                      7.1.33-4.el7.remi                @remi-php71
	php-pecl-zip.x86_64                 1.17.0-1.el7.remi.7.1            @remi-php71
	php-php-gettext.noarch              1.0.12-1.el7                     @epel
	php-process.x86_64                  7.1.33-4.el7.remi                @remi-php71
	php-tcpdf.noarch                    6.2.26-1.el7                     @epel
	php-tcpdf-dejavu-sans-fonts.noarch  6.2.26-1.el7                     @epel
	php-tidy.x86_64                     7.1.33-4.el7.remi                @remi-php71
	php-xml.x86_64                      7.1.33-4.el7.remi                @remi-php71
```

ここまでで、php関連パッケージをアンインストールしてから、remi-php73およびepelからphp関連パッケージをインストールすればよさそうなことがわかりました。


apacheを停止します。

```
$ sudo systemctl stop httpd
```

PHP7.1をアンインストールします。

```
$ sudo yum remove php-*
	================================================================================
	 Package                      Arch    Version                Repository    Size
	================================================================================
	Removing:
	 php                          x86_64  7.1.33-4.el7.remi      @remi-php71  9.4 M
	 php-bcmath                   x86_64  7.1.33-4.el7.remi      @remi-php71   94 k
	 php-cli                      x86_64  7.1.33-4.el7.remi      @remi-php71   14 M
	 php-common                   x86_64  7.1.33-4.el7.remi      @remi-php71  8.0 M
	 php-fedora-autoloader        noarch  1.0.0-1.el7            @epel         15 k
	 php-gd                       x86_64  7.1.33-4.el7.remi      @remi-php71  204 k
	 php-json                     x86_64  7.1.33-4.el7.remi      @remi-php71   80 k
	 php-mbstring                 x86_64  7.1.33-4.el7.remi      @remi-php71  2.8 M
	 php-mcrypt                   x86_64  7.1.33-4.el7.remi      @remi-php71   89 k
	 php-mysqlnd                  x86_64  7.1.33-4.el7.remi      @remi-php71  850 k
	 php-pdo                      x86_64  7.1.33-4.el7.remi      @remi-php71  386 k
	 php-pecl-zip                 x86_64  1.17.0-1.el7.remi.7.1  @remi-php71  188 k
	 php-php-gettext              noarch  1.0.12-1.el7           @epel         57 k
	 php-process                  x86_64  7.1.33-4.el7.remi      @remi-php71  180 k
	 php-tcpdf                    noarch  6.2.26-1.el7           @epel         11 M
	 php-tcpdf-dejavu-sans-fonts  noarch  6.2.26-1.el7           @epel        1.5 M
	 php-tidy                     x86_64  7.1.33-4.el7.remi      @remi-php71  106 k
	 php-xml                      x86_64  7.1.33-4.el7.remi      @remi-php71  855 k

	Transaction Summary
	================================================================================
	Remove  18 Packages
```

意図しないパッケージがアンインストールされないように注意しましょう。

続いて、有効にするリポジトリを切り替えます。
remi-php71を無効化し、remi-php73を有効化します。

```
$ sudo vi /etc/yum.repos.d/remi-php71.repo
	[remi-php71]
	enabled=0
$ sudo vi /etc/yum.repos.d/remi-php73.repo
	[remi-php73]
	enabled=1
```

PHP7.3をインストールします。
対象パッケージは先ほどアンインストールしたものを指定します。
提供されていないパッケージがある可能性もあるので注意しましょう。

```
$ sudo yum install php php-bcmath php-cli php-common php-fedora-autoloader php-gd php-json php-mbstring php-mcrypt php-mysqlnd php-pdo php-pecl-zip php-php-gettext php-process php-tcpdf php-tcpdf-dejavu-sans-fonts php-tidy php-xml
	================================================================================
	 Package                      Arch    Version                 Repository   Size
	================================================================================
	Installing:
	 php                          x86_64  7.3.14-1.el7.remi       remi-php73  3.2 M
	 php-bcmath                   x86_64  7.3.14-1.el7.remi       remi-php73   74 k
	 php-cli                      x86_64  7.3.14-1.el7.remi       remi-php73  4.9 M
	 php-common                   x86_64  7.3.14-1.el7.remi       remi-php73  1.1 M
	 php-fedora-autoloader        noarch  1.0.0-1.el7             epel        9.6 k
	 php-gd                       x86_64  7.3.14-1.el7.remi       remi-php73   81 k
	 php-json                     x86_64  7.3.14-1.el7.remi       remi-php73   66 k
	 php-mbstring                 x86_64  7.3.14-1.el7.remi       remi-php73  511 k
	 php-mysqlnd                  x86_64  7.3.14-1.el7.remi       remi-php73  235 k
	 php-pdo                      x86_64  7.3.14-1.el7.remi       remi-php73  128 k
	 php-pecl-mcrypt              x86_64  1.0.3-1.el7.remi.7.3    remi-php73   30 k
	 php-pecl-zip                 x86_64  1.17.0-1.el7.remi.7.3   remi-php73   53 k
	 php-php-gettext              noarch  1.0.12-1.el7            epel         23 k
	 php-process                  x86_64  7.3.14-1.el7.remi       remi-php73   83 k
	 php-tcpdf                    noarch  6.2.26-1.el7            epel        2.1 M
	 php-tcpdf-dejavu-sans-fonts  noarch  6.2.26-1.el7            epel        257 k
	 php-tidy                     x86_64  7.3.14-1.el7.remi       remi-php73   67 k
	 php-xml                      x86_64  7.3.14-1.el7.remi       remi-php73  208 k
	Installing for dependencies:
	 libargon2                    x86_64  20161029-3.el7          epel         23 k
	 oniguruma5                   x86_64  6.9.4-1.el7.remi        remi-safe   197 k

	Transaction Summary
	================================================================================
	Install  18 Packages (+2 Dependent packages)
```

PHPのバージョンを確認します。
PHP7.3になっていれば成功です。

```
$ php -v
	PHP 7.3.14 (cli) (built: Jan 21 2020 09:59:50) ( NTS )
	Copyright (c) 1997-2018 The PHP Group
	Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
```

apacheを起動します。

```
$ sudo systemctl start httpd
```

ブラウザでPHPで作られているWEBシステムが確認できればOKでしょう。