PHPのCGI版とモジュール版の違い

PHPはHTMLと親和性が高く、Webサイト制作において現在非常に人気のある言語です。そのためレンタルサーバーにおいても、ほぼすべてのサービスでPHPの利用が可能になっています。

ただし、じつはこのPHPには「CGI版」と「モジュール版」という二種類があります。ここでは両者の違いについて簡単に解説したいと思います。なおレンタルサーバーがどちらを採用しているかは、公式サイトの機能一覧やよくある質問などのページに記載されていることが多いです。

CGI版

CGI版は実行ファイル形式とも呼ばれ、Webサーバーとは別のプロセスで実行されます。
このメリットとしては、まずセキュリティ面が挙げられます。CGI(版のPHP)を動かす各ユーザーは、Webサーバー本体を動かすユーザーとは異なります(切り離されています)。そのため誤って他ユーザーに干渉してしまうといった危険がありません。

一方デメリットとしては、Webサーバーとは別個のプロセスとして動かすぶん、実行するたびにメモリのロードが必要となり、処理作度がモジュール版に比べて遅くなります。

なお処理速度の問題を解決するためにFastCGIという仕様も存在していて、レンタルサーバーによってはこのFastCGIを採用しているところもあります。

モジュール版

モジュール版はCGI版の逆で、WebサーバーのプロセスのなかでPHPを実行してしまう方法です。現在多くのレンタルサーバーはWebサーバーにApache(アパッチ)を採用しているため、モジュール版というと、通常はApacheのモジュール版を意味します。

ただPHPがWebサーバーを動かすユーザー(root権限など)で動作するため、ユーザーが複数いる共用サーバーではセキュリティ面に不安があります。そこでモジュール版には「セーフモード」という設定があり、ユーザー間のファイル干渉を防止できるようなっています。

またモジュール版のメリットとして、WebサーバーのプロセスでPHPが実行されるため、CGI版に比べて動作速度が高速になるという点があります。

レンタルサーバーの多くはCGI版

CGIとモジュールのそれぞれに長所・短所がありますが、共用レンタルサーバーではCGI版が採用されやすいです。
※ただし近年ではモジュール版を採用しているサービスも少しずつ増えてきています。

これにはセキュリティ面の問題のほか、CGIだと各ユーザーのプロセスの負荷を計測しやすい(=過大な負荷をかけているユーザーを発見しやすい)という理由があるようです。

参考:PHP におけるモジュール版とCGI 版の比較 + WordPress の適用例 – 小粋空間

FastCGI・モジュール版を採用しているサービス

前述のとおり、モジュール版を用いるか、もしくはCGI版でも「FastCGI」を利用することによってPHPを高速化できます。

では具体的に、こうした高速化の工夫がどのレンタルサーバーで取られているかを最後に紹介しておきます。なお、代表的なサービスに絞って掲載していますのでご了承ください。

まずは個人向けのレンタルサーバーから紹介します。

  • エックスサーバー:全プランでFastCGIが利用できます
  • ロリポップ!:スタンダード以上のプランでモジュール版が利用できます
  • さくら:最上位のビジネスプロプランではCGI版とモジュール版を任意に切り替え可能

次に法人向けのサービスについてです。

  • シックスコア:全プランでFastCGIが利用できます
  • WebArena SuiteX:モジュール・CGI版の両方に対応(一部ディレクトリで制限あり)
  • CPI:モジュール版とCGI版の両方に対応しています

※CPIについては、厳密には通常のApache版モジュールではなく独自モジュールとのことです。ただし機能的には同等で、利用方法もApache版と同様です。

負荷の高いCGIを使う予定のある方は、こうしたPHPの高速化を取り入れているサービスの利用をおすすめします。