|
今現在、私の環境ではPHP4とPHP5をソースからインストール・利用しています。2004/08/23現在、PHP4と5では、PHP3と4のように「共存」(設定変更・再起動なしに利用可能)というわけにはいかないので、毎回httpd.conf内のLoadModuleの設定を変更してApacheを再起動して使っていますが、個人ユースではさほど手間ではありません。ただ、php.iniやPEARライブラリ、cli版(の名称、つまりコマンド名)はきっちり分けて管理しておきたい(特にphp.ini)ので、configure時やインストール後に若干手を入れるようにしています。
具体的には、以下のような事をやっています。
- php.iniをバージョン毎にディレクトリを変える
- cli版の名称を変える
- PHP4とPHP5で、PEARライブラリのインストールディレクトリを変える
- PHP4とPHP5で、pearコマンドで利用するpear.confのインストールディレクトリを変える
- PHP4・PHP5用のpearコマンドを別途作成する
3番目以降は全てPEARの管理に関連するものです。
まず、php.iniの方ですが、こちらはconfigure時にオプションを指定することで別ディレクトリで管理可能になります。
●configureコマンド(PHP5.0.1の場合)$ ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
:
--with-config-file-path=/usr/local/lib/php5/ini/5.0.1 \
--with-config-file-scan-dir=/usr/local/lib/php.d \
:
--with-config-file-pathでphp.iniの検索先ディレクトリを指定(通常は/usr/local/lib)し、make install後に実ディレクトリを作成、php.iniをこのディレクトリに作成しています。一方の--with-config-file-scan-dirで全てのバージョンで共通な設定を記述したiniファイルを配置するディレクトリを指定しています。
次にcli版の名称変更ですが、私の場合、suffixを付けることでPHP4とPHP5を区別するようにしています。これもconfigure時に指定可能です
●configureコマンド(PHP4の場合)$ ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
:
--program-suffix=4 \
:
ここでは--program-suffixに「4」を指定していますので、インストールされるcli版は「php4」という名前になります。当然、PHP5では「5」を指定します。こうすると、PHP4とPHP5の各cliを使い分ける事ができるようになります。
最後にPEARの管理ですが、上記のcli名称変更も必要になります。まず、configureオプションで以下のように指定します。
●configureコマンド(PHP4の場合)$ ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
:
--program-suffix=4 \
--with-pear=/usr/local/lib/php4/pear \
--sysconfdir=/usr/local/lib/php4/etc \
:
ここでは--with-pearでPEARライブラリのインストール先、--sysconfdirでpearコマンドの設定をシリアライズしたpear.confのインストール先をそれぞれ指定しています。特に--sysconfdirは個人的に嵌ったところで、pear.conf内にPEARライブラリのインストール先ディレクトリ等が記述されているため、別バージョンで上書きされないようにする必要があります。
この後、通常の手順でPHPをインストールし、PATHの通ったディレクトリに各バージョンのpearコマンドを作成します。といっても、以下のような単純なshスクリプトですが。。。
●/usr/local/bin/pear4#!/bin/sh
PHP_PEAR_PHP_BIN=/usr/local/bin/php4 \
PHP_PEAR_INSTALL_DIR=/usr/local/lib/php4/pear \
/usr/local/bin/pear $@
何をやっているかは、pearコマンド自体をviewやlessで見てもらえればすぐに分かると思いますが、
- 使用するphpコマンド
- PEARライブラリのインストール先ディレクトリ
を特定の環境変数にセットし、pearコマンドを実行するだけのものです。pear5コマンドも同様に作成しておきます。これで、pearコマンドもPHP4・PHP5で使い分けることができます。
なんか、バッドノウハウのような気もしなくもないですが、これでPEAR版PHPUnit・PHPUnit2の両方がまともに使える。。。(^-^;
|