PHP5.2系をCGIモードで動かす

仕事の都合で、PHP5.2系の環境を作る必要があり、仕方なく環境構築しました。
既存の開発環境にはPHP5.3系がすでにインストールされているので、開発環境をもう一つ作ろうかと思ったのですが、
複数VMWare Playerのインスタンスを立ちあげたくないのと管理が大変になりそうな気がしたので、既存の環境に追加することにしました。
今回は簡単にPHPをインストールするためにphpbrewを使用します。

https://github.com/c9s/phpbrew

phpbrewのインストール

開発環境はCentOS6.2でサポート外みたいなので、以下の方法でインストールします。
今回ビルドする時に色々と足りなかったので、yumでインストールしていますが、すでにインストールしている場合は飛ばしてください。

$ sudo su -
# yum install libxml2-devel libxml2 libmhash-devel libmhash \
> libtidy libtidy-devel re2c bison bison-devel flex libxslt libxslt-devel
# pear channel-discover pear.corneltek.com
# pear install -a -f corneltek/PhpBrew
# exit
$ phpbrew init
$ vim ~/.bashrc
>> [[ -s $HOME/.phpbrew/bashrc ]] && source $HOME/.phpbrew/bashrc
$ source ~/.bashrc
$ phpbrew install php-5.2.17
$ /usr/bin/php phpbrew use php-5.2.17
$ /usr/bin/php phpbrew install-ext mysql

phpbrewは実行可能ですが、現時点ではそのまま実行すると問題があります。
なぜならシェバンが「#!/usr/bin/env php」なので、php-5.2.17に切り替えた瞬間PHP5.2で起動してしまいます。
なので、今回はわざわざPHPの実行ファイルを指定しています。(Aliasとか作っておいてもいいかも)
なお、今回はPHP5.2系をデフォルトとしては使わないのでuseで一時的に切り替えています。

Apacheの設定

他の環境に影響が出ないようにVirtualHostで設定します。

$ sudo su -
# ln -s /home/fenriswolf/.phpbrew/php/php-5.2.17/bin/php-cgi /var/www/cgi-bin/php52
# chmod +rx /home/fenriswolf
# cd /etc/httpd/vhost.d
# vim sample.conf
>> <VirtualHost *:80>
>>   DocumentRoot "/var/www/html/sample"
>>   ServerName "sample.local"
>>   Action php52 /cgi-bin/php52
>>   AddHandler php52 .php .html
>>   DirectoryIndex index.php index.html
>>   <directory "/var/www/html/sample">
>>     AllowOverride All
>>     Options +ExecCGI
>>     Allow from All
>>   </Directory>
>> </VirtualHost>
# vim ../conf/httpd.conf
>> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
>> <Directory "/var/www/cgi-bin">
>>     AllowOverride All
>>     Options FollowSymLinks
>>     Order allow,deny
>>     Allow from all
>> </Directory>

php-cgiのシンボリックリンクはScriptAliasの設定によってパスを変更してください。
もし可能であれば、Apacheの実行ユーザでphp入れた方がいいですね。
ただ今回は面倒なので、やっていません。

これで終わりです。
extensionが足りなかったら、phpbrewで入れてください。