[CentOS]ローカル環境のPHPを7.2から7.4へアップグレード

開発環境

Virtual Box / Vagrant / CentOS7 で構築してあるローカルのLAMP環境ですが、そろそろPHPのバージョンを7.2から7.4に上げようと画策。ちなみに遊び用Ubuntuは8.0にしているのでその話はまた改めて。

ローカル環境だし面倒なので、慎重さを最低限にして一気にやってしまおうと思います。

まずは最低限のバックアップとか何とか

ホームディレクトリでいいと思いますが、php-upgradeというフォルダを作っていくつかバックアップ的な?ことをします。

phpの本体の他にインストールする関連パッケージ類、モジュール、それから設定ファイルphp.ini、これぐらいでいいでしょう。

# フォルダ作る
$ mkdir php-upgrade && cd php-upgrade

# インストールしたパッケージ類をメモっとく
$ sudo yum list installed | grep php > php72-installed.txt

# 同様にモジュールも。
$ php -m > php72-modules.txt

# php.iniもバックアップとっとく。場所忘れてるので調べて。
$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
$ cp /etc/php.ini php72.ini

# で、こんな感じ。ll 超便利。一応、 ls -l のことね。
[php-upgrade]$ ll
合計 76
-rw-rw-r-- 1 vagrant vagrant  4453  3月 18 07:26 php72-installed.txt
-rw-rw-r-- 1 vagrant vagrant   379  3月 18 07:49 php72-modules.txt
-rw-r--r-- 1 vagrant vagrant 63232  3月 18 07:51 php72.ini

ここで、php72-installed.txtを見れば分かることなんですけど、

$ cat php72-installed.txt 
php.x86_64                            7.2.22-1.el7.remi              @remi-php72
php-PsrLog.noarch                     1.1.0-1.el7.remi               @remi      
php-bcmath.x86_64                     7.2.22-1.el7.remi              @remi-php72
php-cli.x86_64                        7.2.22-1.el7.remi              @remi-php72
php-common.x86_64                     7.2.22-1.el7.remi              @remi-php72
php-composer-ca-bundle.noarch         1.2.4-1.el7.remi               @remi      
php-composer-semver.noarch            1.5.0-1.el7.remi               @remi      
php-composer-spdx-licenses.noarch     1.5.2-1.el7.remi               @remi      
php-composer-xdebug-handler.noarch    1.3.3-1.el7.remi               @remi      
php-fedora-autoloader.noarch          1.0.0-1.el7.remi               @remi      
php-gd.x86_64                         7.2.22-1.el7.remi              @remi-php72
php-gmp.x86_64                        7.2.22-1.el7.remi              @remi-php72
php-google-recaptcha.noarch           1.2.3-1.el7.remi               @remi      
php-intl.x86_64                       7.2.22-1.el7.remi              @remi-php72
php-json.x86_64                       7.2.22-1.el7.remi              @remi-php72
php-jsonlint.noarch                   1.7.1-1.el7.remi               @remi      
php-justinrainbow-json-schema5.noarch 5.2.8-1.el7.remi               @remi      
php-mbstring.x86_64                   7.2.22-1.el7.remi              @remi-php72
php-mysqlnd.x86_64                    7.2.22-1.el7.remi              @remi-php72
php-paragonie-random-compat.noarch    2.0.18-1.el7.remi              @remi      
php-password-compat.noarch            1.0.4-1.el7.remi               @remi      
php-pdo.x86_64                        7.2.22-1.el7.remi              @remi-php72
php-pecl-zip.x86_64                   1.15.4-1.el7.remi.7.2          @remi-php72
php-phpmyadmin-motranslator.noarch    4.0-1.el7.remi                 @remi      
php-phpmyadmin-shapefile.noarch       2.1-1.el7.remi                 @remi      
php-phpmyadmin-sql-parser.noarch      4.3.2-1.el7.remi               @remi      
php-phpseclib.noarch                  2.0.21-1.el7.remi              @remi      
php-process.x86_64                    7.2.22-1.el7.remi              @remi-php72
php-psr-container.noarch              1.0.0-1.el7.remi               @remi      
php-recode.x86_64                     7.2.22-1.el7.remi              @remi-php72
php-seld-phar-utils.noarch            1.0.1-2.el7.remi               @remi      
php-symfony-browser-kit.noarch        2.8.51-2.el7.remi              @remi      
php-symfony-class-loader.noarch       2.8.51-2.el7.remi              @remi      
php-symfony-common.noarch             2.8.51-2.el7.remi              @remi      
php-symfony-config.noarch             2.8.51-2.el7.remi              @remi      
php-symfony-console.noarch            2.8.51-2.el7.remi              @remi      
php-symfony-css-selector.noarch       2.8.51-2.el7.remi              @remi      
php-symfony-debug.noarch              2.8.51-2.el7.remi              @remi      
php-symfony-dependency-injection.noarch
php-symfony-dom-crawler.noarch        2.8.51-2.el7.remi              @remi      
php-symfony-event-dispatcher.noarch   2.8.51-2.el7.remi              @remi      
php-symfony-expression-language.noarch
php-symfony-filesystem.noarch         2.8.51-2.el7.remi              @remi      
php-symfony-finder.noarch             2.8.51-2.el7.remi              @remi      
php-symfony-http-foundation.noarch    2.8.51-2.el7.remi              @remi      
php-symfony-http-kernel.noarch        2.8.51-2.el7.remi              @remi      
php-symfony-polyfill.noarch           1.12.0-1.el7.remi              @remi      
php-symfony-process.noarch            2.8.51-2.el7.remi              @remi      
php-symfony-var-dumper.noarch         2.8.51-2.el7.remi              @remi      
php-symfony-yaml.noarch               2.8.51-2.el7.remi              @remi      
php-symfony3-common.noarch            3.4.30-1.el7.remi              @remi      
php-symfony3-translation.noarch       3.4.30-1.el7.remi              @remi      
php-twig.noarch                       1.42.3-1.el7.remi              @remi      
php-twig-extensions.noarch            1.5.4-1.el7.remi               @remi      
php-xml.x86_64                        7.2.22-1.el7.remi              @remi-php72
phpMyAdmin.noarch                     4.9.0.1-1.el7.remi             @remi

PHP7.2をインストールする際に利用したリポジトリは @remiと@remi-php74だけ(remi-safeは明示的に殺したりしたはずだし)なので、

インストールする際にはenablerepoでremiとremi-php74を明示的に指定したのでいいかな。

PHP7.2を削除して、PHP7.4をインストール

phpパッケージの削除

$ sudo yum remove php-*

PHP7.4本体のインストール

$ sudo yum install --enablerepo=remi,remi-php74 php
読み込んだプラグイン:fastestmirror
remi                                                                                                                                                                                 | 3.0 kB  00:00:00     
remi/primary_db                                                                                                                                                                      | 2.9 MB  00:00:15     
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * remi: remi.mirror.digitalpacific.com.au
 * remi-php74: remi.mirror.digitalpacific.com.au
 * updates: ftp.nara.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php.x86_64 0:7.4.16-1.el7.remi を インストール
--> 依存性の処理をしています: php-cli(x86-64) = 7.4.16-1.el7.remi のパッケージ: php-7.4.16-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.16-1.el7.remi のパッケージ: php-7.4.16-1.el7.remi.x86_64
--> 依存性の処理をしています: php-sodium(x86-64) = 7.4.16-1.el7.remi のパッケージ: php-7.4.16-1.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ php-cli.x86_64 0:7.4.16-1.el7.remi を インストール
---> パッケージ php-common.x86_64 0:7.4.16-1.el7.remi を インストール
--> 依存性の処理をしています: php-json(x86-64) = 7.4.16-1.el7.remi のパッケージ: php-common-7.4.16-1.el7.remi.x86_64
---> パッケージ php-sodium.x86_64 0:7.4.16-1.el7.remi を インストール
--> 依存性の処理をしています: libsodium.so.23()(64bit) のパッケージ: php-sodium-7.4.16-1.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libsodium.x86_64 0:1.0.18-1.el7.remi を インストール
---> パッケージ php-json.x86_64 0:7.4.16-1.el7.remi を インストール
--> 依存性解決を終了しました。

依存性を解決しました

======================================================================================================================
 Package                                         アーキテクチャー                            バージョン                                               リポジトリー                                     容量
======================================================================================================================
インストール中:
 php                                             x86_64                                      7.4.16-1.el7.remi                                        remi-php74                                      3.4 M
依存性関連でのインストールをします:
 libsodium                                       x86_64                                      1.0.18-1.el7.remi                                        remi                                            148 k
 php-cli                                         x86_64                                      7.4.16-1.el7.remi                                        remi-php74                                      5.2 M
 php-common                                      x86_64                                      7.4.16-1.el7.remi                                        remi-php74                                      1.2 M
 php-json                                        x86_64                                      7.4.16-1.el7.remi                                        remi-php74                                       71 k
 php-sodium                                      x86_64                                      7.4.16-1.el7.remi                                        remi-php74                                       83 k

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

総ダウンロード容量: 10 M
インストール容量: 42 M
Is this ok [y/d/N]: y
Downloading packages:
(1/6): libsodium-1.0.18-1.el7.remi.x86_64.rpm                                                                                                                                        | 148 kB  00:00:01     
(2/6): php-sodium-7.4.16-1.el7.remi.x86_64.rpm                                                                                                                                       |  83 kB  00:00:00     
(3/6): php-json-7.4.16-1.el7.remi.x86_64.rpm                                                                                                                                         |  71 kB  00:00:03     
(4/6): php-common-7.4.16-1.el7.remi.x86_64.rpm                                                                                                                                       | 1.2 MB  00:00:07     
(5/6): php-7.4.16-1.el7.remi.x86_64.rpm                                                                                                                                              | 3.4 MB  00:00:07     
(6/6): php-cli-7.4.16-1.el7.remi.x86_64.rpm                                                                                                                                          | 5.2 MB  00:00:11     
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                        895 kB/s |  10 MB  00:00:11     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : php-json-7.4.16-1.el7.remi.x86_64                                                                                                                                           1/6 
  インストール中          : php-common-7.4.16-1.el7.remi.x86_64                                                                                                                                         2/6 
  インストール中          : php-cli-7.4.16-1.el7.remi.x86_64                                                                                                                                            3/6 
  インストール中          : libsodium-1.0.18-1.el7.remi.x86_64                                                                                                                                          4/6 
  インストール中          : php-sodium-7.4.16-1.el7.remi.x86_64                                                                                                                                         5/6 
  インストール中          : php-7.4.16-1.el7.remi.x86_64                                                                                                                                                6/6 
  検証中                  : php-7.4.16-1.el7.remi.x86_64                                                                                                                                                1/6 
  検証中                  : libsodium-1.0.18-1.el7.remi.x86_64                                                                                                                                          2/6 
  検証中                  : php-common-7.4.16-1.el7.remi.x86_64                                                                                                                                         3/6 
  検証中                  : php-sodium-7.4.16-1.el7.remi.x86_64                                                                                                                                         4/6 
  検証中                  : php-json-7.4.16-1.el7.remi.x86_64                                                                                                                                           5/6 
  検証中                  : php-cli-7.4.16-1.el7.remi.x86_64                                                                                                                                            6/6 

インストール:
  php.x86_64 0:7.4.16-1.el7.remi                                                                                                                                                                            

依存性関連をインストールしました:
  libsodium.x86_64 0:1.0.18-1.el7.remi    php-cli.x86_64 0:7.4.16-1.el7.remi    php-common.x86_64 0:7.4.16-1.el7.remi    php-json.x86_64 0:7.4.16-1.el7.remi    php-sodium.x86_64 0:7.4.16-1.el7.remi   

完了しました!

本体インストール中に依存性によりいくつかのパッケージが同時にインストールされます。

  • php-json

  • php-common

  • php-cli

  • libsodium

  • php-sodium

関連パッケージの選定とインストール

では、上記と先のphp72-installed.txt などなどを踏まえて足りないものを入れます。

  • php-gd
  • php-mbstring
  • php-mysqlnd
  • php-pdo
  • php-google-recaptcha
  • php-xml
  • php-xmlrpc
  • php-pecl
  • php-pecl-mcrypt
  • php-pecl-mysql
  • phpMyAdmin
$ sudo yum -y install --enablerepo=remi,remi-php74 php-gd php-mbstring php-mysqlnd php-pdo php-google-recaptcha php-xml php-xmlrpc php-pecl php-pecl-mcrypt php-pecl-mysql

依存性関連で

  • libmcrypt
  • oniguruma5
  • php-fedora-autoloader

もインストールされました。

oniguruma ってのは初耳だったんですけど、なんでも正規表現のライブラリだそうです。

鬼車 (ライブラリ)-wiki

確認

$ php -v
PHP 7.4.16 (cli) (built: Mar  2 2021 10:35:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

$ sudo yum list installed | grep php
oniguruma5php.x86_64                 6.9.6-1.el7.remi                @remi      
php.x86_64                           7.4.16-1.el7.remi               @remi-php74
php-cli.x86_64                       7.4.16-1.el7.remi               @remi-php74
php-common.x86_64                    7.4.16-1.el7.remi               @remi-php74
php-fedora-autoloader.noarch         1.0.1-2.el7.remi                @remi      
php-gd.x86_64                        7.4.16-1.el7.remi               @remi-php74
php-google-recaptcha.noarch          1.2.4-1.el7.remi                @remi      
php-json.x86_64                      7.4.16-1.el7.remi               @remi-php74
php-mbstring.x86_64                  7.4.16-1.el7.remi               @remi-php74
php-mysqlnd.x86_64                   7.4.16-1.el7.remi               @remi-php74
php-pdo.x86_64                       7.4.16-1.el7.remi               @remi-php74
php-pecl-mcrypt.x86_64               1.0.4-1.el7.remi.7.4            @remi-php74
php-pecl-mysql.x86_64                1.0.0-0.23.20190415.d7643af.el7.remi.7.4
                                                                     @remi-php74
php-sodium.x86_64                    7.4.16-1.el7.remi               @remi-php74
php-xml.x86_64                       7.4.16-1.el7.remi               @remi-php74
php-xmlrpc.x86_64                    7.4.16-1.el7.remi               @remi-php74

関連パッケージは以前よりだいぶん減ったけど、前はいらないものも随分入ってしまっていたので、これでスッキリしていい感じだと思います!!

あとはphpMyAdminですが、これは手動でやるつもり。

これで、ブラウザで何かこの環境のワードプレスを動かしてみます。

ある程度プラグインを使っているサイトを見てみましたが、問題無しでした。

7.2 → 7.4 ぐらいでは大して問題は起きにくいのでしょう!

phpinfoについて

phpinfo();のみを記述したファイルを作ってinfo.phpなどとして確認するという、まあよくやるアレですが、やってみても表示されるバージョンが上がってないということがあります。ありましたww

多分キャッシュなんですけど、いったん外にでてvagrant reloadしてやれば、まあ治る。

phpMyAdminのインストール

手動でやります。

PHPのバージョンが7.4に上がったので、phpMyAdminはバージョン4.9から5に上げます。

で、公式(https://www.phpmyadmin.net/downloads/)にアクセスしたら、5.1.0がイケるようなので、それにします。

Current version compatible with PHP 7.1 and newer and MySQL/MariaDB 5.5 and newer.

で、リリース日が2021-02-24となってるのでPHP8.0でもいけるんだろうか?

ここを読んだところでは、php8.0への言及は1行だけ

Fix for several PHP 8 warnings or errors, giving this release full compatibility with PHP 8

マジか?さらっとfull compatibility達成て書いてるけど。

とりあえず、サクッとやってしまいましょう。


$ cd /var/www/html/
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.1.0/phpMyAdmin-5.1.0-all-languages.tar.gz
--2021-03-18 17:46:02--  https://files.phpmyadmin.net/phpMyAdmin/5.1.0/phpMyAdmin-5.1.0-all-languages.tar.gz
files.phpmyadmin.net (files.phpmyadmin.net) をDNSに問いあわせています... 89.187.160.52
files.phpmyadmin.net (files.phpmyadmin.net)|89.187.160.52|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 13687393 (13M) [application/octet-stream]
`phpMyAdmin-5.1.0-all-languages.tar.gz' に保存中

100%[==================================================>] 13,687,393  1.70MB/s 時間 9.4s   

2021-03-18 17:46:11 (1.39 MB/s) - `phpMyAdmin-5.1.0-all-languages.tar.gz' へ保存完了 [13687393/13687393]

$ sudo tar xvfz phpMyAdmin-5.1.0-all-languages.tar.gz

$ ls | grep phpMyAdmin
phpMyAdmin-5.1.0-all-languages
phpMyAdmin-5.1.0-all-languages.tar.gz

# アーカイブは削除、解凍済みのフォルダをリネーム
$ sudo rm -rf phpMyAdmin-5.1.0-all-languages.tar.gz & sudo mv phpMyAdmin-5.1.0-all-languages phpMyAdmin

とりあえずこれでアクセスしてみま。

blowfish_secretのアレをアレしたらOK!!!

一応参考まで:phpMyAdminの手動インストール](https://blog.at-human.com/2021/03/vagrant-ubuntu/#toc_id_7)。

はい、これでとりあえずPHPのバージョンアップは完了です。

めでたしめでたし。