PHP7.4へのアップデート

最終更新日:2020年07月23日
レベル:★★★☆☆
機能拡張やセキュリティ対策などでアップデートが発生するPHPをバージョン7.4にアップデートする方法を紹介します。

PHPのインストール(PHP7.2)」でも書いたように、CentOS7の標準リポジトリに含まれるPHPのバージョンは古いものが入っています(CentOS 7.6.1818 でphp5.4系)。PHPの修正版がリリースされてもCentOS7に反映されるタイミングもやや遅い傾向があります。

以降では、最新のPHPを提供してくれている「remi」リポジトリを用いてPHPをバージョン7.2から7.4へアップグレードする方法をご紹介します。

なお、PHP7.4へアップデートする環境には既にremiリポジトリが導入され、PHP7.1以降がインストールされていることを前提とします。まだremiリポジトリ、PHP7.1以降を導入していない場合は、「PHPのインストール(PHP7.2)」を参考に事前に導入してください。

事前準備

パッケージの更新

事前にCentOS7のパッケージを最新版にアップデートします。

# yum update

アップデートが完了したら一旦再起動しておきます。

# reboot

インストール済PHPパッケージを調査

現在CentOSマシン上にどういうPHPのパッケージがインストールされているか調査します。
以下はサンプルマシン上のインストール済みPHPパッケージを調査した結果の例です(PHP7.2がremiリポジトリからインストールされているのがわかります)。

# yum list installed |grep php <----------- 入力
oniguruma5php.x86_64               6.9.5+rev1-2.el7.remi      @remi-safe <----- これは無視
php.x86_64                         7.2.32-1.el7.remi          @remi-php72       
php-cli.x86_64                     7.2.32-1.el7.remi          @remi-php72       
php-common.x86_64                  7.2.32-1.el7.remi          @remi-php72       
php-fedora-autoloader.noarch       1.0.1-2.el7                @epel             
php-gd.x86_64                      7.2.32-1.el7.remi          @remi-php72       
php-imap.x86_64                    7.2.32-1.el7.remi          @remi-php72       
php-json.x86_64                    7.2.32-1.el7.remi          @remi-php72       
php-mbstring.x86_64                7.2.32-1.el7.remi          @remi-php72       
php-mysqlnd.x86_64                 7.2.32-1.el7.remi          @remi-php72       
php-pdo.x86_64                     7.2.32-1.el7.remi          @remi-php72       
php-pear.noarch                    1:1.10.12-1.el7.remi       @remi-php72       
php-pecl-mcrypt.x86_64             1.0.3-1.el7.remi.7.2       @remi-php72       
php-pgsql.x86_64                   7.2.32-1.el7.remi          @remi-php72       
php-process.x86_64                 7.2.32-1.el7.remi          @remi-php72       
php-xml.x86_64                     7.2.32-1.el7.remi          @remi-php72

この内容をメモ等して残しておきます。

PHPパッケージの削除

次のコマンドを入力して現在インストールされているPHPパッケージを削除します。

# yum remove php php-*

削除対象の一覧が表示されるので、上記で調査したものと一致していることを確認し、「y」を入力してパッケージを削除します。


================================================================================
 Package                 アーキテクチャー
                                  バージョン                リポジトリー   容量
================================================================================
削除中:
 php                     x86_64   7.2.32-1.el7.remi         @remi-php72    10 M
 php-cli                 x86_64   7.2.32-1.el7.remi         @remi-php72    15 M
 php-common              x86_64   7.2.32-1.el7.remi         @remi-php72    12 M
 php-fedora-autoloader   noarch   1.0.1-2.el7               @epel          15 k
 php-gd                  x86_64   7.2.32-1.el7.remi         @remi-php72   212 k
 php-imap                x86_64   7.2.32-1.el7.remi         @remi-php72   191 k
 php-json                x86_64   7.2.32-1.el7.remi         @remi-php72    88 k
 php-mbstring            x86_64   7.2.32-1.el7.remi         @remi-php72   2.0 M
 php-mysqlnd             x86_64   7.2.32-1.el7.remi         @remi-php72   866 k
 php-pdo                 x86_64   7.2.32-1.el7.remi         @remi-php72   386 k
 php-pear                noarch   1:1.10.12-1.el7.remi      @remi-php72   2.1 M
 php-pecl-mcrypt         x86_64   1.0.3-1.el7.remi.7.2      @remi-php72   100 k
 php-pgsql               x86_64   7.2.32-1.el7.remi         @remi-php72   363 k
 php-process             x86_64   7.2.32-1.el7.remi         @remi-php72   188 k
 php-xml                 x86_64   7.2.32-1.el7.remi         @remi-php72   855 k

トランザクションの要約
================================================================================
削除  15 パッケージ

インストール容量: 44 M
上記の処理を行います。よろしいでしょうか? [y/N]y <----- 入力
 :
完了しました!

PHPのパッケージが削除されたかを確認します。

# yum list installed |grep php
# <------ 完全に削除された場合、空白が返ってきます

remiリポジトリの設定

現在、PHP7.2をインストールするように設定されているremiリポジトリを、PHP7.4がインストールされるように設定変更します。

次のコマンドを入力し、現在のリポジトリの状態を確認します。

# yum repolist all |grep php <-------- 入力
 :
remi-php71-test-debuginfo/x86_64   Remi's PHP 7.1 test RPM reposito 無効
remi-php72                         Remi's PHP 7.2 RPM repository fo 有効:    412 <-- 有効
remi-php72-debuginfo/x86_64        Remi's PHP 7.2 RPM repository fo 無効
remi-php72-test                    Remi's PHP 7.2 test RPM reposito 無効
remi-php72-test-debuginfo/x86_64   Remi's PHP 7.2 test RPM reposito 無効
!remi-php73                        Remi's PHP 7.3 RPM repository fo 無効
remi-php73-debuginfo/x86_64        Remi's PHP 7.3 RPM repository fo 無効
 :

PHP7.2のリポジトリを無効にします。

# vi /etc/yum.repos.d/remi-php72.repo

enabled の値を1(有効)から0(無効)へ変更します。

 :
enabled=0 <--- 1→0へ
gpgcheck=1
 :

PHP7.4のリポジトリを有効にします。

# vi /etc/yum.repos.d/remi-php74.repo

enabled の値を0(無効)から1(有効)へ変更します。

 :
enabled=1 <--- 0→1へ
gpgcheck=1
 :

次のコマンドを入力し、リポジトリの状態を再度確認します。

# yum repolist all |grep php <-------- 入力
 :
remi-php71-test-debuginfo/x86_64   Remi's PHP 7.1 test RPM reposito 無効
remi-php72                         Remi's PHP 7.2 RPM repository fo 無効 <---------- 無効になった
remi-php72-debuginfo/x86_64        Remi's PHP 7.2 RPM repository fo 無効
remi-php72-test                    Remi's PHP 7.2 test RPM reposito 無効
remi-php72-test-debuginfo/x86_64   Remi's PHP 7.2 test RPM reposito 無効
!remi-php73                        Remi's PHP 7.3 RPM repository fo 無効
remi-php73-debuginfo/x86_64        Remi's PHP 7.3 RPM repository fo 無効
remi-php73-test                    Remi's PHP 7.3 test RPM reposito 無効
remi-php73-test-debuginfo/x86_64   Remi's PHP 7.3 test RPM reposito 無効
remi-php74                         Remi's PHP 7.4 RPM repository fo 有効:    350 <-- 有効
remi-php74-debuginfo/x86_64        Remi's PHP 7.4 RPM repository fo 無効
remi-php74-test                    Remi's PHP 7.4 test RPM reposito 無効
remi-php74-test-debuginfo/x86_64   Remi's PHP 7.4 test RPM reposito 無効
 :

新PHPパッケージのインストール

入っていたPHPパッケージの内容を参考に、インストールするPHPパッケージを指定してインストールします。
以下は、一般的なCMS(WordPress, MODX, baserCMSなど)を稼働させるために必要なパッケージを含めてインストールするコマンド例です。

# yum install php php-common php-gd php-mbstring php-pdo php-mysqlnd php-xml php-mcrypt php-pgsql php-pear php-imap

インストールされるパッケージの内容を確認し、問題なければ「y」を入力しインストールします。

 :
================================================================================
 Package                  アーキテクチャー
                                    バージョン              リポジトリー   容量
================================================================================
インストール中:
 php                      x86_64    7.4.8-2.el7.remi        remi-php74    3.4 M
 php-common               x86_64    7.4.8-2.el7.remi        remi-php74    1.2 M
 php-gd                   x86_64    7.4.8-2.el7.remi        remi-php74     85 k
 php-imap                 x86_64    7.4.8-2.el7.remi        remi-php74     93 k
 php-mbstring             x86_64    7.4.8-2.el7.remi        remi-php74    522 k
 php-mysqlnd              x86_64    7.4.8-2.el7.remi        remi-php74    250 k
 php-pdo                  x86_64    7.4.8-2.el7.remi        remi-php74    135 k
 php-pear                 noarch    1:1.10.12-1.el7.remi    remi-php74    362 k
 php-pecl-mcrypt          x86_64    1.0.3-1.el7.remi.7.4    remi-php74     30 k
 php-pgsql                x86_64    7.4.8-2.el7.remi        remi-php74    134 k
 php-xml                  x86_64    7.4.8-2.el7.remi        remi-php74    205 k
依存性関連でのインストールをします:
 libsodium                x86_64    1.0.18-1.el7            epel          147 k
 php-cli                  x86_64    7.4.8-2.el7.remi        remi-php74    5.1 M
 php-fedora-autoloader    noarch    1.0.1-2.el7             epel           11 k
 php-json                 x86_64    7.4.8-2.el7.remi        remi-php74     70 k
 php-process              x86_64    7.4.8-2.el7.remi        remi-php74     89 k
 php-sodium               x86_64    7.4.8-2.el7.remi        remi-php74     81 k

トランザクションの要約
================================================================================
インストール  11 パッケージ (+6 個の依存関係のパッケージ)

総ダウンロード容量: 12 M
インストール容量: 49 M
Is this ok [y/d/N]: y <---- 入力
 :

php.iniの編集

新しいPHPをインストールすると、/etc/php.ini も最新版に初期化されるので、PHPパッケージ削除時にバックアップされた直近のphp.iniファイルである「/etc/php.ini.rpmsave」の内容を参考に「/etc/php.ini」に反映させます。

apacheの再起動

php.iniの編集が完了したら、apacheをリロード、または再起動します。

# systemctl restart httpd

動作確認

PHPで動作するアプリケーションが正しく動作することを確認します。

ー 以上 ー

 CMSを使ったホームページ制作
 VPS, AWS等クラウドシステム構築
等々のご依頼承っております