最新のPHPニュース

PHP4とPHP5を同じポートと拡張子で共存させる方法が紹介されています

2006年07月27日

Zend Developer Zoneで、PHP4とPHP5をWindows XPのApache上で共存させる方法を紹介した記事が掲載されています。ポートを変更して共存させる方法はよく知られていると思いますが、この記事で紹介されているのは両方とも80番ポートで実行できる、という点で珍しい方法です。

Apacheのバーチャルホストで、CGI版PHPが実行されるように設定することで、同一ポートでPHP4とPHP5を共存させることができるようになります。WindowsのApacheでPHP4がApacheのモジュールとしてインストールされている場合、以下のようにバーチャルホストを定義することで、PHP5をそのバーチャルホストでCGI版ですが、使うことができるようになります。

<VirtualHost *:80>
ServerName php5.localhost
DocumentRoot "d:/apache2/htdocs/php5"
DirectoryIndex index.php index.html index.htm
SetEnv PHPRC d:/php5
ScriptAlias /cgi-bin/ "d:/php5/"
Action php5-script /cgi-bin/php-cgi.exe
AddHandler php5-script .php .html
</VirtualHost>

Windows上で、PHP4とPHP5を共存させ、なおかつ同一ポートでなければならない場合は、非常に有効になる方法です。

また、PHPプロ!ではLinux上でも同じことができるかどうか実験してみました。まず、PHP5がApacheのモジュールとしてインストールされているサーバーに、PHP4をインストールします。

./configure --prefix=/data/php --exec-prefix=/data/php
make
make install

そして、Apacheに以下のバーチャルホストを追加します。

<VirtualHost *:80>
ServerName php5.localhost
DocumentRoot "/data/htdocs/"
DirectoryIndex index.php index.html index.htm
ScriptAlias /cgi-bin/ "/data/php/bin/"
Action php4-script /cgi-bin/php
AddHandler php4-script .php .html
</VirtualHost>

上記のようにすることで、php5.localhostのバーチャルホスト上(ポート80番のまま!)では、CGI版PHP4が実行されるようになりました。

拡張子を変更したり、ポートを変更する方法はかなり知られていますが、80番ポート上でPHP4とPHP5を切り替える、というのはあまりなかったので、気になった方はぜひ一度試してみてはどうでしょうか?

関連リンク

この記事へのトラックバックURL

よくきたblog

2006年07月28日 13:13 PHP4とPHP5を同じポートで動かす

昨年の極める! PHPで紹介していますよ.

続きを読む