一番簡単なCentOS PHP7.3から7.4への移行方法

linux-logo

 今回はPhpを7.4系にアップグレードする際の作業メモです。他のブログなどでは、一度前のバージョンのPHPを完全に消去してから新たにPhp7.4を入れるような記事が多かったのですが、筆者のように本番環境を運営している立場からするとPHPを全部消し去るというのは怖くてとてもできません。なので、古いバージョンをアップグレードする形でバージョンを移行できる作業方法を公開したいと思います。

まずはいろいろチェック

PHPのバージョンをチェック

 まずはここからですかね。PHP 7.3からPHP 7.4の移行では、筆者の環境ではなんら問題は起こりませんでした。しかし、PHP5からPHP7に移行したときは、廃止されたAPIなどの関係でどつぼにハマりましたので、あまり遠いバージョンからのアップグレードは完全なバックアップを取ってからにしたほうが無難です。今回は、。PHP7.3の環境を最新の7.4に上げることを目的にしています。下記の出力のように今回はPHPバージョン7.3.23からのアップグレードになります。

[root@web03 salesmgr]# php -v
PHP 7.3.23 (cli) (built: Sep 29 2020 08:33:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.23, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.23, Copyright (c) 1999-2018, by Zend Technologies

レポジトリの確認

epel-releaseの確認

 では、epel-releaseリポジトリがすでに導入されているか確認しておきます。下記の出力を見る限り入ってるみたいですね。

[root@web03 salesmgr]# yum repolist all | grep epel
 * epel: d2lzkl7pfhq30w.cloudfront.net
epel/x86_64                         Extra Packages for Enterpris enabled: 13,455
epel-debuginfo/x86_64               Extra Packages for Enterpris disabled
epel-source/x86_64                  Extra Packages for Enterpris disabled
epel-testing/x86_64                 Extra Packages for Enterpris disabled
epel-testing-debuginfo/x86_64       Extra Packages for Enterpris disabled
epel-testing-source/x86_64          Extra Packages for Enterpris disabled

もしも入ってなかったら・・・

 以下のコマンドを実行してepel-releaseを導入します。

yum install epel-release

remiリポジトリの存在チェック

 次にremiリポジトリについても存在確認しておきます。筆者の環境ではPHP73がenableになっていました。

[root@web03 salesmgr]# yum repolist all |grep php
 * remi-php73: mirror.team-cymru.com
remi-php54Remi's PHP 5.4 RPM repositor disabled
remi-php55Remi's PHP 5.5 RPM repositor disabled
remi-php55-debuginfo/x86_64Remi's PHP 5.5 RPM repositor disabled
!remi-php56Remi's PHP 5.6 RPM repositor disabled
remi-php56-debuginfo/x86_64Remi's PHP 5.6 RPM repositor disabled
!remi-php70Remi's PHP 7.0 RPM repositor disabled
remi-php70-debuginfo/x86_64Remi's PHP 7.0 RPM repositor disabled
remi-php70-testRemi's PHP 7.0 test RPM repo disabled
remi-php70-test-debuginfo/x86_64Remi's PHP 7.0 test RPM repo disabled
remi-php71Remi's PHP 7.1 RPM repositor disabled
remi-php71-debuginfo/x86_64Remi's PHP 7.1 RPM repositor disabled
remi-php71-testRemi's PHP 7.1 test RPM repo disabled
remi-php71-test-debuginfo/x86_64Remi's PHP 7.1 test RPM repo disabled
remi-php72Remi's PHP 7.2 RPM repositor disabled
remi-php72-debuginfo/x86_64Remi's PHP 7.2 RPM repositor disabled
remi-php72-testRemi's PHP 7.2 test RPM repo disabled
remi-php72-test-debuginfo/x86_64Remi's PHP 7.2 test RPM repo disabled
remi-php73Remi's PHP 7.3 RPM repositor enabled:384
remi-php73-debuginfo/x86_64Remi's PHP 7.3 RPM repositor disabled
remi-php73-testRemi's PHP 7.3 test RPM repo disabled
remi-php73-test-debuginfo/x86_64Remi's PHP 7.3 test RPM repo disabled
remi-php74Remi's PHP 7.4 RPM repositor disabled
remi-php74-debuginfo/x86_64Remi's PHP 7.4 RPM repositor disabled
remi-php74-testRemi's PHP 7.4 test RPM repo disabled
remi-php74-test-debuginfo/x86_64Remi's PHP 7.4 test RPM repo disabled
remi-php80Remi's PHP 8.0 RPM repositor disabled
remi-php80-debuginfo/x86_64Remi's PHP 8.0 RPM repositor disabled
remi-php80-testRemi's PHP 8.0 test RPM repo disabled
remi-php80-test-debuginfo/x86_64Remi's PHP 8.0 test RPM repo disabled

もしもremiリポジトリが無かったら・・・

rpm -ivh http://ftp.riken.jp/Linux/remi/enterprise/remi-release-7.rpm

リポジトリを73から74に変更

remi-php73をdisableにする

[root@web03 salesmgr]# yum-config-manager --disable remi-php73

remi-php74をenableにする

[root@web03 salesmgr]# yum-config-manager --enable remi-php74

remi-php74がenableになったか確認する

[root@web03 salesmgr]# yum repolist all |grep php
 * remi-php73: mirror.team-cymru.com
remi-php54Remi's PHP 5.4 RPM repositor disabled
remi-php55Remi's PHP 5.5 RPM repositor disabled
remi-php55-debuginfo/x86_64Remi's PHP 5.5 RPM repositor disabled
!remi-php56Remi's PHP 5.6 RPM repositor disabled
remi-php56-debuginfo/x86_64Remi's PHP 5.6 RPM repositor disabled
!remi-php70Remi's PHP 7.0 RPM repositor disabled
remi-php70-debuginfo/x86_64Remi's PHP 7.0 RPM repositor disabled
remi-php70-testRemi's PHP 7.0 test RPM repo disabled
remi-php70-test-debuginfo/x86_64Remi's PHP 7.0 test RPM repo disabled
remi-php71Remi's PHP 7.1 RPM repositor disabled
remi-php71-debuginfo/x86_64Remi's PHP 7.1 RPM repositor disabled
remi-php71-testRemi's PHP 7.1 test RPM repo disabled
remi-php71-test-debuginfo/x86_64Remi's PHP 7.1 test RPM repo disabled
remi-php72Remi's PHP 7.2 RPM repositor disabled
remi-php72-debuginfo/x86_64Remi's PHP 7.2 RPM repositor disabled
remi-php72-testRemi's PHP 7.2 test RPM repo disabled
remi-php72-test-debuginfo/x86_64Remi's PHP 7.2 test RPM repo disabled
remi-php73Remi's PHP 7.3 RPM repositor disabled
remi-php73-debuginfo/x86_64Remi's PHP 7.3 RPM repositor disabled
remi-php73-testRemi's PHP 7.3 test RPM repo disabled
remi-php73-test-debuginfo/x86_64Remi's PHP 7.3 test RPM repo disabled
remi-php74Remi's PHP 7.4 RPM repositor enabled: 365
remi-php74-debuginfo/x86_64Remi's PHP 7.4 RPM repositor disabled
remi-php74-testRemi's PHP 7.4 test RPM repo disabled
remi-php74-test-debuginfo/x86_64Remi's PHP 7.4 test RPM repo disabled
remi-php80Remi's PHP 8.0 RPM repositor disabled
remi-php80-debuginfo/x86_64Remi's PHP 8.0 RPM repositor disabled
remi-php80-testRemi's PHP 8.0 test RPM repo disabled
remi-php80-test-debuginfo/x86_64Remi's PHP 8.0 test RPM repo disabled

php7.3をphp7.4にアップグレードする

 ここまで来たら、以下のコマンドを投入して、アップグレードをします。かんたんです。「yum update」と入力するだけです。ただ、怖いのでバックアップをとってから作業してください。

[root@web03 salesmgr]# yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.gigenet.com
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: mirror.steadfastnet.com
 * remi-php74: mirror.team-cymru.com
 * remi-safe: mirror.team-cymru.com
 * updates: mirrors.gigenet.com
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php.x86_64 0:7.4.11-1.el7.remi will be an update
--> Processing Dependency: php-sodium(x86-64) = 7.4.11-1.el7.remi for package: php-7.4.11-1.el7.remi.x86_64
---> Package php-cli.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-cli.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-common.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-common.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-devel.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-devel.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-fpm.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-fpm.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-gd.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-gd.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-gmp.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-gmp.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-json.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-json.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-mbstring.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-mbstring.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-mysqlnd.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-mysqlnd.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-opcache.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-opcache.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-pdo.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-pdo.x86_64 0:7.4.11-1.el7.remi will be an update
---> Package php-pecl-mcrypt.x86_64 0:1.0.3-1.el7.remi.7.3 will be updated
---> Package php-pecl-mcrypt.x86_64 0:1.0.3-1.el7.remi.7.4 will be an update
---> Package php-pecl-zip.x86_64 0:1.19.1-1.el7.remi.7.3 will be updated
---> Package php-pecl-zip.x86_64 0:1.19.1-1.el7.remi.7.4 will be an update
---> Package php-xml.x86_64 0:7.3.23-1.el7.remi will be updated
---> Package php-xml.x86_64 0:7.4.11-1.el7.remi will be an update
--> Running transaction check
---> Package php-sodium.x86_64 0:7.4.11-1.el7.remi will be installed
--> Processing Dependency: libsodium.so.23()(64bit) for package: php-sodium-7.4.11-1.el7.remi.x86_64
--> Running transaction check
---> Package libsodium.x86_64 0:1.0.18-1.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================
 Package                    Arch              Version                            Repository             Size
=============================================================================================================
Updating:
 php                        x86_64            7.4.11-1.el7.remi                  remi-php74            3.4 M
 php-cli                    x86_64            7.4.11-1.el7.remi                  remi-php74            5.1 M
 php-common                 x86_64            7.4.11-1.el7.remi                  remi-php74            1.2 M
 php-devel                  x86_64            7.4.11-1.el7.remi                  remi-php74            1.2 M
 php-fpm                    x86_64            7.4.11-1.el7.remi                  remi-php74            1.8 M
 php-gd                     x86_64            7.4.11-1.el7.remi                  remi-php74             86 k
 php-gmp                    x86_64            7.4.11-1.el7.remi                  remi-php74             77 k
 php-json                   x86_64            7.4.11-1.el7.remi                  remi-php74             70 k
 php-mbstring               x86_64            7.4.11-1.el7.remi                  remi-php74            522 k
 php-mysqlnd                x86_64            7.4.11-1.el7.remi                  remi-php74            251 k
 php-opcache                x86_64            7.4.11-1.el7.remi                  remi-php74            328 k
 php-pdo                    x86_64            7.4.11-1.el7.remi                  remi-php74            136 k
 php-pecl-mcrypt            x86_64            1.0.3-1.el7.remi.7.4               remi-php74             30 k
 php-pecl-zip               x86_64            1.19.1-1.el7.remi.7.4              remi-php74             61 k
 php-xml                    x86_64            7.4.11-1.el7.remi                  remi-php74            206 k
Installing for dependencies:
 libsodium                  x86_64            1.0.18-1.el7                       epel                  147 k
 php-sodium                 x86_64            7.4.11-1.el7.remi                  remi-php74             82 k
Transaction Summary
=============================================================================================================
Install              ( 2 Dependent packages)
Upgrade  15 Packages
Total download size: 15 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/17): php-7.4.11-1.el7.remi.x86_64.rpm                                              | 3.4 MB  00:00:00
(2/17): libsodium-1.0.18-1.el7.x86_64.rpm                                             | 147 kB  00:00:00
(3/17): php-common-7.4.11-1.el7.remi.x86_64.rpm                                       | 1.2 MB  00:00:00
(4/17): php-devel-7.4.11-1.el7.remi.x86_64.rpm                                        | 1.2 MB  00:00:00
(5/17): php-cli-7.4.11-1.el7.remi.x86_64.rpm                                          | 5.1 MB  00:00:00
(6/17): php-fpm-7.4.11-1.el7.remi.x86_64.rpm                                          | 1.8 MB  00:00:00
(7/17): php-gd-7.4.11-1.el7.remi.x86_64.rpm                                           |  86 kB  00:00:00
(8/17): php-gmp-7.4.11-1.el7.remi.x86_64.rpm                                          |  77 kB  00:00:00
(9/17): php-json-7.4.11-1.el7.remi.x86_64.rpm                                         |  70 kB  00:00:00
(10/17): php-mbstring-7.4.11-1.el7.remi.x86_64.rpm                                    | 522 kB  00:00:00
(11/17): php-mysqlnd-7.4.11-1.el7.remi.x86_64.rpm                                     | 251 kB  00:00:00
(12/17): php-opcache-7.4.11-1.el7.remi.x86_64.rpm                                     | 328 kB  00:00:00
(13/17): php-pecl-mcrypt-1.0.3-1.el7.remi.7.4.x86_64.rpm                              |  30 kB  00:00:00
(14/17): php-pdo-7.4.11-1.el7.remi.x86_64.rpm                                         | 136 kB  00:00:00
(15/17): php-pecl-zip-1.19.1-1.el7.remi.7.4.x86_64.rpm                                |  61 kB  00:00:00
(16/17): php-sodium-7.4.11-1.el7.remi.x86_64.rpm                                      |  82 kB  00:00:00
(17/17): php-xml-7.4.11-1.el7.remi.x86_64.rpm                                         | 206 kB  00:00:00
-------------------------------------------------------------------------------------------------------------
Total                                                                         19 MB/s |  15 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : php-common-7.4.11-1.el7.remi.x86_64                                                      1/32
warning: /etc/php.ini created as /etc/php.ini.rpmnew
  Updating   : php-json-7.4.11-1.el7.remi.x86_64                                                        2/32
  Updating   : php-cli-7.4.11-1.el7.remi.x86_64                                                         3/32
  Updating   : php-pdo-7.4.11-1.el7.remi.x86_64                                                         4/32
  Installing : libsodium-1.0.18-1.el7.x86_64                                                            5/32
  Installing : php-sodium-7.4.11-1.el7.remi.x86_64                                                      6/32
  Updating   : php-7.4.11-1.el7.remi.x86_64                                                             7/32
  Updating   : php-mysqlnd-7.4.11-1.el7.remi.x86_64                                                     8/32
  Updating   : php-devel-7.4.11-1.el7.remi.x86_64                                                       9/32
  Updating   : php-gmp-7.4.11-1.el7.remi.x86_64                                                        10/32
  Updating   : php-opcache-7.4.11-1.el7.remi.x86_64                                                    11/32
  Updating   : php-gd-7.4.11-1.el7.remi.x86_64                                                         12/32
  Updating   : php-fpm-7.4.11-1.el7.remi.x86_64                                                        13/32
  Updating   : php-mbstring-7.4.11-1.el7.remi.x86_64                                                   14/32
  Updating   : php-xml-7.4.11-1.el7.remi.x86_64                                                        15/32
  Updating   : php-pecl-mcrypt-1.0.3-1.el7.remi.7.4.x86_64                                             16/32
  Updating   : php-pecl-zip-1.19.1-1.el7.remi.7.4.x86_64                                               17/32
  Cleanup    : php-7.3.23-1.el7.remi.x86_64                                                            18/32
  Cleanup    : php-devel-7.3.23-1.el7.remi.x86_64                                                      19/32
  Cleanup    : php-cli-7.3.23-1.el7.remi.x86_64                                                        20/32
  Cleanup    : php-pecl-zip-1.19.1-1.el7.remi.7.3.x86_64                                               21/32
  Cleanup    : php-pecl-mcrypt-1.0.3-1.el7.remi.7.3.x86_64                                             22/32
  Cleanup    : php-mysqlnd-7.3.23-1.el7.remi.x86_64                                                    23/32
  Cleanup    : php-pdo-7.3.23-1.el7.remi.x86_64                                                        24/32
  Cleanup    : php-xml-7.3.23-1.el7.remi.x86_64                                                        25/32
  Cleanup    : php-mbstring-7.3.23-1.el7.remi.x86_64                                                   26/32
  Cleanup    : php-fpm-7.3.23-1.el7.remi.x86_64                                                        27/32
  Cleanup    : php-gd-7.3.23-1.el7.remi.x86_64                                                         28/32
  Cleanup    : php-opcache-7.3.23-1.el7.remi.x86_64                                                    29/32
  Cleanup    : php-gmp-7.3.23-1.el7.remi.x86_64                                                        30/32
  Cleanup    : php-json-7.3.23-1.el7.remi.x86_64                                                       31/32
  Cleanup    : php-common-7.3.23-1.el7.remi.x86_64                                                     32/32
  Verifying  : php-7.4.11-1.el7.remi.x86_64                                                             1/32
  Verifying  : php-pdo-7.4.11-1.el7.remi.x86_64                                                         2/32
  Verifying  : libsodium-1.0.18-1.el7.x86_64                                                            3/32
  Verifying  : php-gmp-7.4.11-1.el7.remi.x86_64                                                         4/32
  Verifying  : php-opcache-7.4.11-1.el7.remi.x86_64                                                     5/32
  Verifying  : php-gd-7.4.11-1.el7.remi.x86_64                                                          6/32
  Verifying  : php-fpm-7.4.11-1.el7.remi.x86_64                                                         7/32
  Verifying  : php-cli-7.4.11-1.el7.remi.x86_64                                                         8/32
  Verifying  : php-mbstring-7.4.11-1.el7.remi.x86_64                                                    9/32
  Verifying  : php-sodium-7.4.11-1.el7.remi.x86_64                                                     10/32
  Verifying  : php-xml-7.4.11-1.el7.remi.x86_64                                                        11/32
  Verifying  : php-mysqlnd-7.4.11-1.el7.remi.x86_64                                                    12/32
  Verifying  : php-json-7.4.11-1.el7.remi.x86_64                                                       13/32
  Verifying  : php-common-7.4.11-1.el7.remi.x86_64                                                     14/32
  Verifying  : php-pecl-mcrypt-1.0.3-1.el7.remi.7.4.x86_64                                             15/32
  Verifying  : php-devel-7.4.11-1.el7.remi.x86_64                                                      16/32
  Verifying  : php-pecl-zip-1.19.1-1.el7.remi.7.4.x86_64                                               17/32
  Verifying  : php-gd-7.3.23-1.el7.remi.x86_64                                                         18/32
  Verifying  : php-7.3.23-1.el7.remi.x86_64                                                            19/32
  Verifying  : php-cli-7.3.23-1.el7.remi.x86_64                                                        20/32
  Verifying  : php-common-7.3.23-1.el7.remi.x86_64                                                     21/32
  Verifying  : php-pdo-7.3.23-1.el7.remi.x86_64                                                        22/32
  Verifying  : php-pecl-mcrypt-1.0.3-1.el7.remi.7.3.x86_64                                             23/32
  Verifying  : php-fpm-7.3.23-1.el7.remi.x86_64                                                        24/32
  Verifying  : php-opcache-7.3.23-1.el7.remi.x86_64                                                    25/32
  Verifying  : php-xml-7.3.23-1.el7.remi.x86_64                                                        26/32
  Verifying  : php-devel-7.3.23-1.el7.remi.x86_64                                                      27/32
  Verifying  : php-pecl-zip-1.19.1-1.el7.remi.7.3.x86_64                                               28/32
  Verifying  : php-json-7.3.23-1.el7.remi.x86_64                                                       29/32
  Verifying  : php-gmp-7.3.23-1.el7.remi.x86_64                                                        30/32
  Verifying  : php-mbstring-7.3.23-1.el7.remi.x86_64                                                   31/32
  Verifying  : php-mysqlnd-7.3.23-1.el7.remi.x86_64                                                    32/32
Dependency Installed:
  libsodium.x86_64 0:1.0.18-1.el7                    php-sodium.x86_64 0:7.4.11-1.el7.remi
Updated:
  php.x86_64 0:7.4.11-1.el7.remi                         php-cli.x86_64 0:7.4.11-1.el7.remi
  php-common.x86_64 0:7.4.11-1.el7.remi                  php-devel.x86_64 0:7.4.11-1.el7.remi
  php-fpm.x86_64 0:7.4.11-1.el7.remi                     php-gd.x86_64 0:7.4.11-1.el7.remi
  php-gmp.x86_64 0:7.4.11-1.el7.remi                     php-json.x86_64 0:7.4.11-1.el7.remi
  php-mbstring.x86_64 0:7.4.11-1.el7.remi                php-mysqlnd.x86_64 0:7.4.11-1.el7.remi
  php-opcache.x86_64 0:7.4.11-1.el7.remi                 php-pdo.x86_64 0:7.4.11-1.el7.remi
  php-pecl-mcrypt.x86_64 0:1.0.3-1.el7.remi.7.4          php-pecl-zip.x86_64 0:1.19.1-1.el7.remi.7.4
  php-xml.x86_64 0:7.4.11-1.el7.remi
Complete!

phpのバージョンを確認

  ちゃんとPHPが7.4系にアップグレードできたかを確認します。

[root@web03 salesmgr]# php -v
PHP 7.4.11 (cli) (built: Sep 29 2020 10:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies

最後にウェブサーバを再起動

 仕上げに、HTTPDを再起動します。

systemctl restart httpd

php_info()を表示させてみる

 ウェブサーバにphp_info()を表示するページをアップロードして、表示を確かめます。ちゃんとPhp 7.4 になっていたら成功です。

Imgur spankyjpn
01-spankyjpn.com-TechPosts

まとめ

 まあ、早い話が、repo_php74をEnableしておいて「yum update」するだけでphp7.3をphp7.4に更新でき、既存のシステムにも影響が出ませんでした。この2つの動作を1回のyumコマンドで行うこともできますが、前回7.5から7.7に上げたときは、pukiwikiやwordpressが動かなくなって、お客さんのウエブサイトもダウンして、とんでもないことになってしまい、バージョンを戻すことも、バックアップから復旧することもできず、数日間寝ずに復旧作業をして地獄を見たので、今回はサーバの完全なディスクイメージの複製も用意して、もしもの場合に備えて万全の対策をして、作業に望んだんですが、でれでもどきどきものでしたが、案外あっさりと更新できてトラブルも無かったので助かりました(笑)。いつもこうだと嬉しいです。

タイトルとURLをコピーしました