WEBサーバで、PHPを使用する場合、モジュール版とCGI(Common Gateway Interface)版が存在します。
PHPのモジュール版とCGI版の主な違いは以下の通りです。
モジュール版(モジュールAPI): PHPがWEBサーバにモジュールとして組み込まれ動作します。WEBサーバ(例えばApache)とPHPが同じプロセスとして動作し、PHPのコードを直接サーバに埋め込むことができます。
CGI版: PHPが外部のプロセスとして動作します。WEBサーバはPHPプログラムを起動し、リクエストを処理するたびに新しいプロセスを起動します。
モジュール版: WEBサーバ起動時一度だけPHPが読み込まれます。PHPが毎回起動されることなく、WEBサーバとPHPが同じプロセス内で動作するため、高速であり、リクエストの処理が効率的に行われます。
CGI版: PHPのスクリプトが表示される度に、新しいプロセスが起動されるため、モジュール版よりも負荷が高くなります。しかし、リソースの使用をより柔軟に個別に管理できる場合があります。
モジュール版: WEBサーバとPHPが同じプロセス内で動作するため、セキュリティの脆弱性があるとWEBサーバにも影響を与える可能性があります。
CGI版: PHPプロセスは外部のプロセスとして動作するため、WEBサーバとは切り離された個別のユーザの環境で実行されるため、セキュリティの影響を最小限に抑えることができます。
モジュール版: PHPの設定はWEBサーバの設定と一体化しています。モジュールを有効化または無効化するためには、WEBサーバの設定ファイルを変更する必要があります。
CGI版: PHPの設定はPHP自体の設定ファイル(php.ini)にあります。設定を変更するには、php.iniファイルを編集する必要があります。
モジュール版とCGI版、どちらを選択するかは、特定の要件や環境に依存します。一般的には、モジュール版が高速でセキュアであり、CGI版はより柔軟なリソース管理を提供します。
WEBサーバがモジュール版、CGI版どちらのモードで動作しているか確認する場合、以下のソースコードのPHPファイルを作成します。
ファイル名は例えばphpinfo.phpとします。
作成したphpinfo.phpをドキュメントルートにftpでアップロードし、phpinfo.phpをブラウザから表示させると、PHPの情報画面が表示されます。
[Server API]という項目に「Apache~」と表示された場合はモジュール版、「CGI~」と表示された場合はCGI版となります。
PHP-FPM(PHP FastCGI Process Manager)は、旧来のCGI版のPHPを改善し、PHPの実行を高速かつ効率的に処理するためのFastCGIプロセスマネージャです。FastCGI(Fast Common Gateway Interface)は、WEBサーバとプログラム間のインターフェースを提供するプロトコルであり、PHP-FPMはこのプロトコルを利用して、WEBサーバ(通常はNginxやApacheなど)とPHPの間で通信を行います。
PHP-FPMは、複数のPHPプロセスを生成し、それらのプロセスをプール内で管理することで、WEBサイトやアプリケーションのリクエストに応じて効率的にPHPの処理を行います。これにより、高負荷のWEBサイトやアプリケーションでも高いパフォーマンスを実現することができます。
PHP-FPMは、PHPのバージョン5.3.3以降で利用可能であり、多くの場合、PHPをWEBサーバと統合するために使用されます。特に、NginxやApacheのようなWEBサーバと組み合わせることで、高速でスケーラブルなウェブアプリケーションを構築することができます。
PHP-CLI(PHP Command Line Interface)は、PHPのコマンドラインツールです。PHP-CLIを使用すると、ターミナルやコマンドプロンプトからPHPスクリプトを実行することができます。
PHP-CLIは、WEBサーバを介さずにPHPスクリプトを実行するために使用されます。これは、バッチ処理、シェルスクリプト、システム管理、データ処理、テストなど、さまざまな用途で利用されます。
PHP-CLIを使用するためには、ターミナルやコマンドプロンプトで php コマンドを実行し、その後に実行したいPHPスクリプトのファイルパスを指定します。
PHP-CLIは、ウェブ開発以外のシナリオでPHPを使用する際に非常に便利です。また、テストやスクリプトの自動化など、開発プロセスを効率化するのに役立ちます。