PHP7.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で動作するアプリケーションが正しく動作することを確認します。