Apache上でPHPをCGIモードで動作させる

Apache等のWEBサーバではPHPの実行方式に2種類あります。
一つはModule方式と言ってApacheのプロセス内でPHPを処理するもの。

もう一つはCGI方式と言ってApacheのプロセス内ではなく外部プログラムを通じてPHPを処理するもの。
大体の場合は、前者のModule方式を使っていることがほとんどではないかと思われます。
その理由として、Module方式の場合パフォーマンスで優位だがらです。
しかし、欠点がありますそれは、PHPの実行ユーザが「Apache」になりセキュリティ面から考えてみると「Apache」ユーザが書き込める所は、他人が作ったPHPで書き込まれてしまうという残念なことが……
その下準備としてwrapper経由でPHPがCGI方式で実行されるようにする。

[環境の説明]
O  S:Centos6.6(64bit)
Apache :2.2.15
P H P:5.3.3

■作業内容
0.PHPの動作方式を確認

 ⇒ブラウザで確認して「Server API」が「Apache 2.0 Handler」ならModule方式

1.wrapperを設置

cd /var/www/
mkdir wrapper
cd wrapper/
vi php-wrapper

 ⇒上記の内容だけでOK

2.wrapperはCGIとなるため実行権限が必要

chmod 750 php-wrapper
chown apache: php-wrapper
 ⇒php-wrapperの所有者と権限を適切に設定

3.Apache上から.phpはphp-wrapper経由のCGIで起動するように設定する

cd /etc/httpd/conf.d/
vi php-wrapper.conf

 ⇒CGI経由にて実行されるべく上記の設定

4.PHPの設定ファイルが被るのでModule方式に使用されるphp.confをリネームする

mv php.conf php.conf_remove

5.Apacheの再起動

service httpd configtest

service httpd restart

6.実行方式の確認
ブラウザで「0.PHPの動作方式を確認」で確認したページへアクセスして
「Server API」が「CGI/FastCGI」ならCGI方式で実行されている。

■余談■
PHPをCGI方式で実行する方法として一例を紹介した訳だが他にもfcgiを使う方法等があります。

Avatar photo

SNOWSKI

大阪にあるどこかのIT会社で働いております / もしかするとあなたのそばにいるかもね...