[Apache][PHP] PHP の実行ユーザを指定する mod_suphp
先週ぐらいまで正月だった気がするんですけど、もう 3 月ってどういうこと・・・?どうもこんにちは nakamura です。
先日 suEXEC に関する記事 を書いた際に、これは PHP でも使えるんですか?という質問をもらいまして、『いやぁやった事ないですね~』なんて答えていたのですが、よくよく考えたらそういうのありそうだな~と思い調べてみたら普通にありました・・・(汗)。という訳で今回は mod_suphp の紹介です。
以下は CentOS-5.7 での導入手順です。
インストール
mod_suphp は rpmforge リポジトリから提供されているのでまずはリポジトリを追加します。※取得する rpm ファイルは OS のバージョンに合わせて適宜変えてください。
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
yum でインストール。
yum install mod_suphp
設定
ちょいちょいよく分からない設定があってハマりましたが・・・やったのはだいたい以下のような設定です。
/etc/suphp.conf
; php を php-cgi に。あとなぜかダブルクオテーションで囲まないと動かない。
; x-httpd-php=php:/usr/bin/php
x-httpd-php="php:/usr/bin/php-cgi"
; こいつもダブルクオテーションで囲む。
; x-suphp-cgi=execute:!self
x-suphp-cgi="execute:!self"
/etc/httpd/conf.d/php.conf
# コメントアウトして mod_php を読み込まないようにする。
# LoadModule php5_module modules/libphp5.so
/etc/httpd/conf.d/suphp.conf
suPHP_Engine On
suPHP_AddHandler x-httpd-php
suPHP_UserGroup nakamura nakamura
上記設定を行ったら Apache 再起動して、ドキュメントルート以下のオーナーを PHP の実行ユーザに変えます。
/etc/init.d/httpd restart
chown -R nakamura:nakamura /home/projects/c-brains.jp/htdocs
以上!で動くはず!
終わりに
結局の所、PHP を CGI モードで動かしているので、権限設定が楽になる分、パフォーマンスは落ちると思います。mod_php で実行ユーザ変えたりできるようになると完璧なんですけどね!