62
50

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-07-25

概要

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

62
50
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62
50

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?