44
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

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

概要

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)を利用することによることが要因。
そのため、共用サーバーでは導入がためらわれる時もある。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
44
Help us understand the problem. What are the problem?