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でswitch
やlist
オプションを実行しようとしてもエラーで使えません。 そのため、他のバージョンに切り替えるときは、いったんデフォルトに戻してから切り替える必要があります。