現在public_htmlとshared_html共にモジュール版(mod_php)が 使われることになっています。 *1
"*.php"のファイルはPHPとして解釈されます。 この場合の動作はモジュール版PHPです。 CGI版PHPで動作させたい場合は"*.cgi"としてファイルの先頭に PHPへのpathを書く必要があります。
まとめてみました。*2
| モジュール版 | CGI版 | 備考 | |
|---|---|---|---|
| 拡張子 | .php | .cgi(先頭にpathが必要) | |
| 実行者 | Apacheのユーザー | スクリプトのオーナー | CGI版はseEXECの効果があるため。 |
| スクリプトのパーミッション | 604 | 700 | 詳しくはパーミッションにもあります。 |
| ディレクトリのパーミッション | 705(ファイルの作成等がある場合は707) | 705(CGIから読み込むデータのみを置く場合は700) | |
| 設定ファイルのパーミッション | 604 | 600 | |
| データファイルのパーミッション | 606 | 600 | |
| 速度 | 高速 | 低速 | |
| 負荷 | 低い | 高い | |
| セキュリティ | 低い | 高い | |
| 制限 | セーフモード | 無し | セーフモードの影響は[PHP: セーフモードにより制限を受けるか無効となる関数 - Manual]を参考。 |
一概には言えません。 負荷を考えればモジュール版は極めて優秀です。 簡単なものであればCによるCGIよりも高速です。 しかし、suEXECが働きませんので、 パーミッションを緩くせざるを得なくセキュリティーが低めです。 隠したいデータファイル等が他人に覗かれる可能性は僅かばかりあります*3。 また、セーフモードの制限により動作しない場合もあります。
セキュリティ上どうしても、とか、 セーフモードでは動かない等があればCGI版を使うしかありませんが、 それら特別の理由がない限りモジュール版で十分です。
本当にモジュール版PHPはもっとも高速なのでしょうか? 現在、他にモジュールを利用したCGIと同じ機能を実現するものはありません。 JSPやmod_perl、mod_ruby、mod_fastcgi等があるのであれば*4、 mod_phpが最速とは言えませんが、 mod_phpしかない現状では最速です。
と言う話は、半分本当で半分嘘です。 私が測ったわけではありませんが、 どこかのサイトにあるグラフが載ってました。 複雑で時間のかかる演算をやらせたところ mod_phpがPerl/CGIに途中で追い抜かれてしまいます。 これはPHP自体がとても遅い言語だからです。 つまり、あまりにも複雑な処理をやらせた場合、 mod_phpのプロセス起動無しによる負荷軽減が PHP自体の重さによって相殺されてしまうのです。
もし、とても複雑で重いCGIを組む場合は、 CやPerlと言った軽い言語をお勧めします。 *5
Rubyはどうなんだって?
・・・
聞かないで…。