概要
PHPにはモジュール版とCGI版が存在する。その場合の違いをまとめる。
説明
CGI版
実行ファイル形式とも呼ばれ、Webサーバーとは別のプロセスで実行される。
メリット
セキュリティ
CGI(版のPHP)を動かす各ユーザーは、Webサーバー本体を動かすユーザーとは異なる。
アプリケーションサーバとwebサーバーが別に存在する状態となる。
そのため、誤って他ユーザーに干渉してしまうといった危険がない。
また、副次的な効果としてサーバの複数台運用の際に依存が少ないことによる移行しやすさがある。
デメリット
実行速度
Webサーバーとは別個のプロセスとして動かすぶん、実行するたびにメモリのロードが必要となり、処理速度がモジュール版に比べて遅くなる。
なお処理速度の問題を解決するためにFastCGIという仕様も存在する。
レンタルサーバーによってはこのFastCGIを採用しているところもある。
モジュール版
CGI版の逆で、WebサーバーのプロセスのなかでPHPを実行してしまう方法。
現在多くのレンタルサーバーはWebサーバーにApache(アパッチ)を採用しているため、モジュール版というと、通常はApacheのモジュール版を意味する。
メリット
WebサーバーのプロセスでPHPが実行されるため、CGI版に比べて動作速度が高速になりやすいという点がある。
デメリット
HPがWebサーバーを動かすユーザー(root権限など)で動作するため、Linuxユーザーが複数用いられる共用サーバーではセキュリティ面に不安がある。
この課題を解決するために、モジュール版には「セーフモード」という設定があり、ユーザー間のファイル干渉を防止できるようになっている。
ただし、諸々設定が必要であるため、そこはデメリットの一つになりうる。
一言でまとめると
モジュール版
Apache の拡張機能で直接処理する方法
CGI版
Apache で直接処理せず、CGI プログラムを別途起動して処理する方法
補足情報
モジュール版の欠点として
ユーザーが複数いる共用サーバーではセキュリティ面に不安がある
と書いたが、これは複数のユーザで一つのミドルウェア(Apache)を利用することによることが要因。
そのため、共用サーバーでは導入がためらわれる時もある。