プライム・ストラテジーの福田です。PHPのバージョンをサクッと一斉に切り替えられて、しかも設定を自動で最適化するコマンドがあります。それが”kusanagi php”です。
参考までに、KUSANAGI 9のBusiness Edition以上では“kusanagi container”という、プロファイルごとにPHPバージョンを切り替えられる便利なコマンドも選択肢の一つとしてあります。こちらの違いに関しては、後ほど解説します。
バージョンを切り替えるにはuseオプションを利用
PHPのバージョンを切り替えるには--use
オプションを利用します。オプションに付与する値としては2023年10月26日時点ではphp82
, php81
, php80
, php74
から選択できます。それぞれ、PHP 8.2, 8.1, 8.0, 7.4への切り替えを意味します。
なお、切替時にはdnfコマンドが走り、それぞれ切り替え元のバージョンの削除と切り替え先のバージョンのインストールをします。ので、数十秒~数分程度時間がかかります。
試しにPHP 8.1からPHP 8.2にアップグレードしてみました。表示された結果はこのようになりました。
[root@host~]# kusanagi php --use php82
Last metadata expiration check: 1:07:54 ago on Fri Oct 27 02:17:40 2023. Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================
Installing:
kusanagi-php82 x86_64 8.2.11-1.el8 kusanagi 11 M
Installing dependencies:
libargon2 x86_64 20171227-3.el8 epel 29 k
Removing:
kusanagi-php81 x86_64 8.1.24-1.el8 @kusanagi 60 M Transaction Summary ================================================================================
Install 2 Packages
Remove 1 Package Total download size: 11 M
Downloading Packages:
(1/2): libargon2-20171227-3.el8.x86_64.rpm 712 kB/s | 29 kB 00:00
(2/2): kusanagi-php82-8.2.11-1.el8.x86_64.rpm 45 MB/s | 11 MB 00:00
--------------------------------------------------------------------------------
Total 14 MB/s | 11 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: libargon2-20171227-3.el8.x86_64 1/1
Installing : libargon2-20171227-3.el8.x86_64 1/3
Installing : kusanagi-php82-8.2.11-1.el8.x86_64 2/3
Running scriptlet: kusanagi-php82-8.2.11-1.el8.x86_64 2/3
Erasing : kusanagi-php81-8.1.24-1.el8.x86_64 3/3
Running scriptlet: kusanagi-php81-8.1.24-1.el8.x86_64 3/3
Verifying : libargon2-20171227-3.el8.x86_64 1/3
Verifying : kusanagi-php82-8.2.11-1.el8.x86_64 2/3
Verifying : kusanagi-php81-8.1.24-1.el8.x86_64 3/3
Installed:
kusanagi-php82-8.2.11-1.el8.x86_64 libargon2-20171227-3.el8.x86_64
Removed:
kusanagi-php81-8.1.24-1.el8.x86_64
Complete!
php completed.
最後に”Complete!”の後”php completed.”が表示されていることを確認したら、変更は完了です。
なお、バージョンを変更する際は互換性などに十分ご注意ください。
参考: WordPressの動くPHPバージョン
参考までに、WordPressが動くKUSANAGIでのPHPバージョンをご案内します。
PHPバージョン | 動作するWordPressバージョン | PHPのEOL日 |
7.4 | 5.3以上 | 2022年11月28日 |
8.0 | 5.6以上 | 2023年11月26日 |
8.1 | 5.9以上 | 2024年11月25日 |
8.2 | 6.1以上 | 2025年12月8日 |
ご覧の通り、PHP 7.4はすでにEOLが過ぎています。そのため、近日中にKUSANAGI 9での提供を終了します。
再起動・設定最適化するには何もオプションをつけずに実行
設定を変更したり、不具合が発生して、PHPの再起動が必要になる場合もあります。その際は通常、”systemctl restart php-fpm”を実行します。ですが、KUSANAGIではもっと簡単に再起動できます。しかも、インスタンスの設定を変更した場合に設定を最適化する機能も備えています。”kusanagi php”を引数無しで実行すればOKです。最後に”php completed.”が表示されていれば、再起動は成功しています。
“kusanagi container”と”kusanagi php”の違い
“container”と”php”、どちらもPHPに関連した機能を提供します。ですが、以下のような違いがあります:
- “kusanagi php”はホストのPHPが切り替わる。そのため、PHPコンテナを使用していない場合は一斉にバージョンが切り替わる。
“kusanagi container”はPodmanを利用する。そのため、プロファイルごとのバージョンを切り替えることができる。 - “kusanagi php”はホストのPHPを利用するため、その必要がない。
“kusanagi container”はPodmanを利用している。そのため、一部設定変更が必要になる場合がある。
まとめると、”kusanagi php”を利用した場合、”kusanagi container”を利用するに比べ、以下のようなメリット・デメリットが発生します:
“kusanagi php”のメリット
“kusanagi container”とは違い、KUSANAGI 9のどのエディションでも利用でき、また、初回セットアップ時にWordPressの設定に手を入れることが不要な点がメリットです。
また、インスタンスの設定変更時に設定の最適化をしてくれることもメリットです。
“kusanagi php”のメリットでありデメリット
ただし、メリットでもありデメリットでもあるのが、”kusanagi container”を利用していないプロファイルで、PHPのバージョンが一斉に切り替わってしまう点です。
一斉にアップグレードできることはセキュリティや機能、速度などにおいてメリットともなります。また、プロファイルごとに一個一個バージョンを切り替える手間を省けることもメリットに考えられます。
しかし、それと同時に、PHPにおいて破壊的変更が入った場合において、簡単にアップグレードできるからと、迂闊に実行するとサイトが動作しなくなるおそれがある点が難点でもあります。
“kusanagi php”のデメリット
“kusanagi php”のみ利用する場合、複数バージョンを併用できません。そのため、すべてのプロファイルで一斉にバージョンを変更する必要があります。例えば、片方のプロファイルではPHP8.2の新機能を試しつつ、もう片方ではPHP8.2では動かないものがある場合、同時に動かせないということです。
まとめ
ここまでで”kusanagi php”と”kusanagi container”との違い、および、”kusanagi php”の機能を解説しました。KUSANAGIの仕組みの理解の一助となれば幸いです。