kusanagi phpでPHPを自由自在に操作する

福田拓朗

"kusanagi php"の利用方法・"kusanagi container"との比較について解説しています。

プライム・ストラテジーの福田です。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.45.3以上2022年11月28日
8.05.6以上2023年11月26日
8.15.9以上2024年11月25日
8.26.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の仕組みの理解の一助となれば幸いです。

参考文献

<< KUSANAGI 9 で PostgreSQL を利用する

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解