既知の人も多いはず。
(ノ・・)ン。。。。。。(((●コロコロッ
PHP4とPHP5を共存させると言う状況は、
まぁ、滅多にないわけですが、
両対応の開発環境を構築するとか、
レンサバにPHP4しか入ってないとか、
利用する機会がゼロというわけではないかも。
方法としては片方をApacheのモジュールとして、
もう片方をCGIとして動作させる。
(両方CGIでも可。)
そして、拡張子を変えて動作するPHPを切り替えるという具合だ。
(拡張子が同じでも可能)
PHP4とPHP5のインストール先を同じにすると共存どころかつぶし合うことになるので、
どちらか一方を意図的に変更しておく。
もちろんphp.iniも二つ用意する。
ポイントは
--enableforce-cgi-redirect
[More:]
PHP4をApacheのモジュールとして、
PHP5をCGIとしてインストールする仕様で考える。
自身がメインで使用する方をモジュールにするといいだろう。
PHP4のインストールは特別変わらないので割愛。
●PHP5のインストール
コンフィギュアオプションをPHP4と揃える。(apxs, apxs2の設定は消すこと)
以下の二つを追加する。
--prefix=/usr/local/php5
--enable-force-cgi-redirect
インストール先が変わっていることと、
php.iniの場所が異なっていればいいので、
以下の方法でも可能。
--with-config-file-path=/usr/local/lib/php5
--program-suffix=5
--enable-force-cgi-redirect
また、レンタルサーバなどで既存のPHP以外のものバージョンをインストールしたいときは、
インストール先をホームにしておく。
--prefix=$HOME/local
--enable-force-cgi-redirect
あとはお決まりのmakeと、
cgi-binディレクトリにファイルをコピーしておく
$ make
# make install
# cp /usr/local/php5/bin/php /usr/lib/cgi-bin/php
そして、PHPをcgi-binディレクトリにコピーしておくのと、
php.iniを用意しておく。
$ make
# cp /usr/local/php5/bin/php /usr/lib/cgi-bin/php
# cp ./php.ini-dist /usr/local/php5/lib/php.ini
●Apacheの設定
ApacheではCGI動作の部分を設定する。
場所はhttpd.conf、.htaccessのどちらでも可。
ディレクティブもどこで書いても良い。
Action php5-script /cgi-bin/php
AddHandler php5-script .php5
これで拡張子がphp5のプログラムは、
php5が動き出すようになる。
上記の方法ではApacheでExecCGIを指定しているディレクトリにPHP本体を置かなければ動作しない。
それを避けるにはPHP本体をWebのディレクトリから外したところに起き、
CGI起動プログラムにPHPの場所を指定する。
#!/usr/local/bin/php
ExecCGIディレクトリにPHPプログラムを置き、
拡張子を.cgiに変更。
プログラムのパーミッションを実行可能にしておき、
PHPプログラムの先頭行に上記のコードを追加する。
こうして置くと、
プログラム本体をWeb上に公開しなくて済む。
おまけ。
途中こんなエラーが出たら、
Invalid command 'Action', perhaps mis-spelled or defined by a module not included in the server configuration
単にmod_actionsが入っていないだけなので、
下記のコマンドを打ち込みmod_actionsをロードする。
# /usr/sbin/apache-modconf apache enable mod_actions
Apache再起動も忘れずに。