Blog

PHP4.4.2 をインストールして PHPBrew で管理する

前回のエントリで PHPBrew をインストールしましたが、 PHPBrewでインストール及び管理できるのは phpbrew known --old の一覧の通り、5.2以降になります。

$ phpbrew known -old
5.6: 5.6.4, 5.6.3, 5.6.2, 5.6.1, 5.6.0 ...
5.5: 5.5.20, 5.5.19, 5.5.18, 5.5.17, 5.5.16, 5.5.15, 5.5.14, 5.5.13 ...
5.4: 5.4.36, 5.4.35, 5.4.34, 5.4.33, 5.4.32, 5.4.31, 5.4.30, 5.4.29 ...
5.3: 5.3.29, 5.3.28, 5.3.27, 5.3.26, 5.3.25, 5.3.24, 5.3.23, 5.3.22 ...
5.2: 5.2.17, 5.2.16, 5.2.15, 5.2.14, 5.2.13, 5.2.12, 5.2.11 ...
You can run `phpbrew update` to get a newer release list.

このように通常は5.2以降のバージョンしか管理できませんが、 PHPの古いバージョンをマニュアルでインストールしてPHPBrewのディレクトリに配置することでPHPBrew上で管理することが可能です。 ただし、ここで行う方法はバージョンをPHPBrewで切り替えできるようにするだけで、 VariantsやExtensionのインストールといったPHPBrewの恩恵は受けられません。

以上を踏まえた上で、今回は PHP4.4.2 のバージョンをPHPBrewで管理できるようにインストールしていきます。

1. パッケージダウンロード&展開

まずはPHP4.4.2のパッケージをダウンロードします。 古いバージョンのPHPパッケージは下記の場所に置かれています。
http://museum.php.net/

次のようにコマンドを入力して、PHPBrewの適切なディレクトリに配置しつつパッケージを展開します。

$ cd ~/.phpbrew/distfiles/
$ wget http://museum.php.net/php4/php-4.4.2.tar.bz2
$ tar -C ~/.phpbrew/php -xjf php-4.4.2.tar.bz2
$ cd ~/.phpbrew/php/php-4.4.2

2. インストール

ターミナルで下記のように入力していきます。 ./configure のオプションは任意のオプションを入れてください。
--prefix[ユーザー名]の箇所は環境に合わせて置き換えてください。

$ LD_FLAGS="-L/usr/local/lib" EXTRA_LIBS="-lresolv" ./configure \
--prefix=/Users/[ユーザー名]/.phpbrew/php/php-4.4.2 \
--with-mysql \
--with-gd \
--with-ttf \
--enable-zend-multibyte \
--enable-mbstring \
--enable-mbregex \
--with-jpeg \
--with-png \
--with-freetype \
--with-zlib \
--enable-inline-optimization \
--disable-debug \
--enable-trans-sid \
--disable-cgi

$ make
$ make install

3. PEARのインストール(PHP4.4.2の場合)

通常は2.までの手順でインストールは完了ですが、PHP4.4.2の場合はバグによりPEARのインストールに失敗します。 make installのときに下記のメッセージが出力されているのが確認できると思います。

:
Installing PEAR environment:      /Users/hoge/.phpbrew/php/php-4.4.2/lib/php/
[PEAR] Archive_Tar: bad md5sum for file /Users/hoge/.phpbrew/php/php-4.4.2/lib/php/Archive/Tar.php
[PEAR] Console_Getopt: bad md5sum for file /Users/hoge/.phpbrew/php/php-4.4.2/lib/php/Console/Getopt.php
[PEAR] HTML_Template_IT: bad md5sum for file /Users/hoge/.phpbrew/php/php-4.4.2/lib/php/HTML/Template/IT.php
[PEAR] Net_UserAgent_Detect- installed: 2.0.1
warning: pear/PEAR requires package "pear/Archive_Tar" (recommended version 1.3.1)
warning: pear/PEAR requires package "pear/Console_Getopt" (recommended version 1.2)
:

bad md5sumと言われており、該当箇所にファイルが存在していないので、 別のところからファイルを持ってくることで解決します。 ここでは、 ~/.phpbrew/php/php-4.4.2/pear/からファイルをコピーすることにします。

$ cd ~/.phpbrew/php/php-4.4.2/
$ cp -r pear/Archive lib/php/
$ cp -r pear/Console lib/php/

コピー後、pearのコマンドで正常に動作するか確認します。

$ pear list
Installed packages, channel pear.php.net:
=========================================
Package              Version State
Net_UserAgent_Detect 2.0.1   stable
PEAR                 1.4.6   stable

PHP4.4.2への切り替え&戻し方

PHP4.4.2がインストールされていることを確認します。

$ phpbrew list
* (system)
php-4.4.2
php-5.6.4

PHP4.4.2に切り替えます。

$ phpbrew switch 4.4.2
$ php -v
PHP 4.4.2 (cli) (built: Jan 28 2015 05:55:15)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

phpbrew switchはターミナルを閉じて開きなおしても設定が残ります。 一時的に切り替えたいだけであればphpbrew useで切り替えるといいです。

デフォルトの(system)の環境に戻したい場合は次のように入力します。

$ phpbrew switch-off  # switchで切り替えた場合
$ phpbrew off  # useで切り替えた場合

このデフォルトの環境に戻す方法は実は重要で、 PHP4でswitchlistオプションを実行しようとしてもエラーで使えません。 そのため、他のバージョンに切り替えるときは、いったんデフォルトに戻してから切り替える必要があります。