PHP4とPHP5の共存をしようとしたけれど断念した。
今更ではあるが、PHP4とPHP5の共存をしようとした。実のところCLI環境では特に難しいものはない。PATHやphp.iniの配置、include_pathやextensionの設定さえごっちゃにならなければ嵌りどころは殆ど無い。
問題はApacheでの共存である。CGIとして上手く切り分けようとしたが、php.iniに色々とセキュリティ関連の厭な感じの記述があったので断念した。怖い。で、Windows上で複数のApacheを立ち上げることができるので、これでPHP4を8084番で、PHP5を8085番で立ち上げ、リバースプロキシとなるApacheを更に一つ立ち上げ、次のように振り分けようと目論んだ。
http://localhost/php4/ -> http://localhost:8084/ http://localhost/php5/ -> http://localhost:8085/
が、よくよく考えるとある種のアプリではこれでは上手く行かないので断念し、PHP4用のApacheとPHP5用の二つを排他的に立ち上げて使用するよう調整した。
ある種のアプリとは、アプリが生成するURLリンクで、URIの部分をアプリの設定ファイル中の絶対URLから生成するタイプのアプリである。
<a href="<?php echo $conf['url']; ?>/hoge.php"> hoge </a>
のようになっていて、で、肝心の値が
$conf['url'] = "http://xxx.yyy.zzz/..../";
のように設定ファイルで絶対URLで記述するタイプ。
これだと、PHP4/5でパスを切り替えるようなロジックを入れなければならない。アプリがこれ一つであればよいが、複数のアプリを動かす場合、それぞれでリンクの生成ロジックを確認し、対処がいるか判定し、ロジックを埋め込まねばならない。
手間。Cookieのpathやdomainの設定も慎重に考えねばならない。
そう言った次第で、結局「同時点での共存」は無理となり、排他的にApacheを切り替える上述のような仕掛けを施すことにした。
なるべくCLIでテストできる分を増やし、Web側を減らして、切り替えて確認する手間を減らさねば・・・。