PHP5.4.10を使用したphp-cgi リダイレクション

PHP 5.4.10へのバージョンアップをしたのは良いが、これまで設定できていたPHPハンドラーのリダイレクションの設定方法が、若干変わってしまったので、その為の設定。

/etc/httpd/conf.d/php.confの記述

オリジナル記述(変更前)
#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
リダイレクションのための記述
#
# Cause the PHP interpreter to handle files with a .php extension.
#
Action php54-cgi /cgi-bin/php-cgi #<--ここを追加
<FilesMatch \.php$>
    #SetHandler application/x-httpd-php # <--コメントアウトして無効化
     SetHandler php54-cgi # <--新たに追加
</FilesMatch>

php-cgiは、/usr/bin/php-cgiに存在するので、予め/var/www/cgi-bin/php-cgiへコピーしておく。

cp -p /usr/bin/php-cgi /var/www/cgi-bin/.

以上の基本設定を実施した後、VirtualHostの記述を行なう。

ScriptAlias /server-php /home/User-ID/vhostname/server-php/php-cgi
<VirtualHost *:80>
        ServerName vhostname
        DocumentRoot "/home/User-ID/vhostname/public_html"
        ServerAlias vhostname
        SuexecUserGroup User-ID UserGroup  #<--ハンドラの所有者を指定
        ErrorLog /var/log/httpd/vhost_error_log
        CustomLog /var/log/httpd/vhost_access_log  Combined env=!no_log
        Action php54-cgi /server-php
        <FilesMatch \.php$>
                 SetHandler php54-cgi
        </FilesMatch>
        <Directory "/home/user-id/vhostname/public_html">
                Options FollowSymLinks ExecCGI
                DirectoryIndex index.php index.html index.htm index.cgi
                AllowOverride All
                Order allow,deny
                Allow from All
        </Directory>
</VirtualHost>
構造
/home
 |__User-ID
         |__vhostname
                 |__public_html
                 |__server-php
                        |__php-cgi <--上記で指定した Owner Groupに合わせる

※上記、php-cgiも先の要領で、コピーしておく

# cd /home/User-ID
# mkdir vhostname
# cd vhostname
# mkdir server-php
# cp -p /usr/bin/php-cgi server-php/.
# mkdir public_html
# cd /home/User-ID
# chown -R User-ID:UserGroup vhostname

以上の設定が終わったら、Apacheを再起動する。
これで、 php-cgiへ、ハンドラーが変わり、/home/User-ID/vhostname/public_html という構造で、アクセス権限が、User-ID:UserGroupとした管理ができるようになる。

以上の設定で、基本的にはOKのはずなんですが、suexecが、/var/www/以下でないと走らないので、/home配下でも走るように改造しておきます。
方法は、/usr/sbin/suexcをバイナリー編集して改造してしまうという記事を参照するときちんと走るようになります。

バーチャルホストでCGIを使う トリッキーな方法ですが、これをやらないと全てを/home配下に置けないのでややこしい感じになります。気力があったら、チャレンジしてみると良いかもしれません。