Apache2 で複数バージョンの PHP を同時に動かす

PPC Mac では PHP のバージョンごとにポートを変えて複数起動した Lighttpd をバックエンドにし、Apache2 の mod_rewrite で切り替えていたのですが、Intel Mac では Lighttpd の調子が悪いので Apache2 だけでやることにしました。

httpd.conf より一部抜粋 (VirtualHost 等の設定は割愛) :

<Directory "/opt/local/apache2/cgi-bin">
        Options FollowSymLinks
</Directory>

ScriptAlias /cgi-bin/ "/opt/local/apache2/cgi-bin/"

Action php-script-4.4 /cgi-bin/php-4.4
Action php-script-5.1 /cgi-bin/php-5.1
Action php-script-5.2 /cgi-bin/php-5.2

<Directory "/Users/rsky/Sites/php44">
        AddHandler php-script-4.4 .php
</Directory>
<Directory "/Users/rsky/Sites/php51">
        AddHandler php-script-5.1 .php
</Directory>
<Directory "/Users/rsky/Sites/php52">
        AddHandler php-script-5.2 .php
</Directory>


自分専用マシン、 非公開鯖なので ~/Sites をドキュメントルートにしています。そしてサブディレクトリ単位で PHP を切り替える仕組み。拡張子はすべて .phpパーミッション 644 のままで OK です。ちなみに ~/Sites 全体では同じく拡張子 .php で mod_php5 を使うようになっています。
/opt/local/apache2/cgi-bin/php-* は別のディレクトリにインストールされている FastCGIPHPで、シンボリックリンクを張っています。 (この設定では FastCGI ではなく CGI として動作)
注意すべき点がひとつだけあり、PHP4 では php.ini で cgi.fix_pathinfo = 1 に設定しないといけません。さもないと正しい $_SERVER['PATH_INFO']$_SERVER['SCRIPT_NAME'] が取得できず、スクリプトの動作に支障を来します。PHP5 からはデフォルト値が 0 から 1 に変更されており、設定する必要はありません。
また、外部に公開するサーバでこういうことをする場合はセキュリティのため configure のオプション --enable-force-redirect をつけてコンパイルするか、php.ini で適切な doc_root (この場合は /Users/rsky/Sites/php*) を設定してやる必要があります。