初めに
AL2023のApacheのデフォルトのPHP実行形式がモジュール版ではなくFastCGI版になりました。
PHP ファイル処理
AL2023/AL2 プラットフォームでは、PHP ファイルは PHP-FPM (CGI プロセス マネージャー) を使用して処理されます。
確認したこと
phpinfo()
sh-5.2$ php-fpm -i | grep Server Server API => FPM/FastCGI Server API (SAPI) Abstraction Layer => Andi Gutmans, Shane Caraveo, Zeev
mod_phpをインストールしようとしましたが、見つかりませんでした。
sh-5.2$ sudo dnf install mod_php Last metadata expiration check: 0:09:34 ago on Mon Jun 24 08:51:14 2024. No match for argument: mod_php Error: Unable to find a match: mod_php sh-5.2$
Red Hatではmod_phpが非推奨の記載がありました。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/8.7_release_notes/deprecated-functionality_dynamic-programming-languages-web-and-database-servers より
Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。RHEL 8 以降、PHP スクリプトはデフォルトで FastCGI Process Manager (php-fpm) を使用して実行されます。
php-fpm(FastCGI版PHP)とは
PHP実行方式の一つで、Webサーバー上でプログラムを実行するための仕組みです。
高負荷のサイトで有用な機能が含まれています。
・初回のプロセス実行時にプロセスを一定時間保持しておくことで、次回のリクエスト時にプロセスの起動/終了処理にかかる負荷を軽減できます
・プロセスの起動/終了処理がないことにより、処理が高速になります
参考
https://www.php.net/manual/ja/install.fpm.php
https://wa3.i-3-i.info/word12806.html
モジュール版との違い
・リクエストに対する処理
モジュール版はApacheの子プロセスが直接処理をするのに対し、php-fpmは別プロセスでPHPを起動してApacheからのリクエストを処理する。
・セキュリティ
モジュール版はApacheの子プロセスの権限をひきつぐことによりセキュリティ的に脆弱になる場合があります。php-fpmの場合、php-fpmプロセスの権限設定を適切にすることによりモジュール版よりもセキュリティを向上できます。
参考
https://www.php.net/manual/ja/security.apache.php
https://qiita.com/kouki_o9/items/4a88cdc30c604373e9ac
まとめ
RHEL 8以降、Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨となりました。
AL2023とRHEL 9ではPHPスクリプトの処理にphp-fpmのみを使用するようになりました。