ひょんなことからWindows XPにLAMP環境ならぬWAMP環境を入れなきゃいけなくなったので、PHP4.4.0のインストールメモを残しておくことにする。実はPHPよりも先にインストールしたMySQL4.0.25の方で大きく躓いていたのだけど…(随分前にインストールした環境に上書きインストールしてしまったみたいで、手動でサービス削除&再登録しなきゃいけなかった)。
ちなみにMySQLを再度インストールするにはコマンドラインから
# sc.exe delete mysql
でサービスを削除し、
# /path/to/mysqld.exe --install
でサービスを再登録しないといけなかった。以前のインストールパスと異なる場所へインストールした場合は、上記の設定をしないと、いくらWinMySQLAdmin.exeから起動しようとしても失敗してしまうみたいだ。同じインストールパスの場合はどうなのかはわからんけれど。
で、本題。
PHPのバイナリデータはオフィシャルサイトのダウンロードページから取得できる。zipとinstallerの2種類があるけど、ここではzipを選ぼう。今回は「php-4.4.0-Win32.zip」を入手した。
zip解凍後、まずは解凍したディレクトリ内にできている「php-4.4.0-Win32」ディレクトリを好きなところへ移動する。僕はリネームして「D:/dev/php/」とした。次は「D:/dev/php/php4ts.dll」にパスを通さなきゃPHPは動かないそうなので、「D:/dev/php/」を環境変数Pathに追加。
次いで設定ファイルのphp.iniを作成する。これは元となるファイルが「D:/dev/php/php.ini-recommended」にあるのでコピーして使えばいいのだけど、Apache経由(SAPI)で使う場合の置き場所は「/path/to/apache/php.ini」でいいらしい。今回、Apacheのインストール先は「D:/dev/Apache/」なので、「D:/dev/Apache/php.ini」へコピーした。
これでPHPのインストールは終わったので、後はhttpd.confに下記の設定を追記して仕上げ。
LoadModule php4_module D:\dev\php\sapi\php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ここまでやったらApacheを再起動してphpinfo()でも出して終わり…かと思ったら躓いた。
Apacheが起動しない。
あれえ?あれえ?ログを見ると「Cannot load d:/dev/php/sapi/php4apache.dll into server: (127) 指定されたプロシージャが見つかりません。」なのだそうな。
ググってみると、これはどうも先のphp4ts.dllが原因で起こりうるエラーの模様。でもPATHは通ってるはずだしなあ、おかしいなあ…と設定ファイルの見直しとか色々と試すが自体は進展せず。うむむ、こんなところで詰まっていてはイカンなあと考えた瞬間、ふと「…MySQLと一緒で、実はPHPも以前の環境が残ってるんじゃ?」と思い、あわててC:/Windows以下をチェックしてみたら…古いphp.iniとphp4ts.dllが出てきた!うひゃー!
これらを削除して再度Apacheを起動してみると、今度は「Cannot load d:/dev/php/sapi/php4apache.dll into server: (126) 指定されたモジュールが見つかりません。」という別のエラーが。なんだよ126とか127とか数字でしゃべりやがって。わけわからんちゅうんじゃ。
でもこれもphp4ts.dllが原因っぽいので、ひょっとしてPATHが通ってないのでは?と思い、試しにD:/dev/Apache/へphp4ts.dllを移動してみると…動いた。やっぱりPATHが通ってないだけっぽい。あれ?でもXPって再起動しなくてもPATHが有効にならなかったっけ?と思いながら再起動してみると…Apacheが動いた。phpinfo()も問題なく表示できている。
となると、126の件はやっぱりPATHが通ってなかったことが原因ってことになるけど、先に書いたとおりXPは環境変数の反映に再起動が不必要なはずなんだけど…ちがったっけ?