現場では意外に、すべての開発をサーバ上で開発する人が多い。毎度毎度書く>アップロード>ブラウザでチェック、というサイクルを回すのはわりと大変なので、私はクライアント(ありがちなWindowsXPマシン)に環境を作ってしまうことが多い。

今更感満点の内容だが、ローカルにも開発環境を整えるといいよ!という啓蒙も含めてエントリしてみる。

apacheとPHPをそれぞれ個別にインストールしても一向に構わないが、XAMPPを使ってラクをしても一向に構わない。最新バージョンへの追随は若干遅れるが、一発でインストールというラクさは一度経験するとなかなか手放しがたい。

ただし、PHP5.2.6とPostgreSQLについてはこんな不具合があるので注意。PostgreSQLを使うなら(なんとなく釈然としないが)PHP5.2.5の含まれた「XAMPP Windows 1.6.6a」を使うといいかもしれない。XAMPPの旧バージョンはここから入手できる。最近のリリースノートはここに残っていた。

XAMPPは素晴らしいことに、PHPのバージョンをbatch一発で切り替えられる

…のだが、php.iniについての説明はされていない。意外とハマるポイントなのでまとめておく。

PHP5用php.ini
[php5safety]xampp\php5.ini
PHP4用php.ini
[php4safety]xampp\php4\php4.ini
apacheのモジュールとして動くときのphp.ini
[phpcurrent]xampp\apache\bin\php.ini

switch-php.batによるphp.iniの動き(4 -> 5)

copy [phpcurrent] [php5safety]
copy [php4safety] [phpcurrent]

5->4のときは **[php4safety][php5safety]**が逆になる。詳細はxampp\install\php-switch.phpを参照のこと。

上記挙動を踏まえて。

php.iniをいろいろ編集して挙動を確認する場合、**[phpcurrent]を編集>apacheをリスタート>挙動を確認、という流れになる。一通り修正が終わって納得のphp.iniができ、そのあとphp-switchを動かすとどうなるだろう。…当然[phpcurrent][php4safety]**で上書きされてしまう。ぎゃー!

これを防ぐために、[phpcurrent]を修正したら[php5safety](もしくは**[php4safety]**)にコピーする、という作業が必要になる。なにかスクリプト(コピーしてapacheのリスタートを行うとか)を書いて自動化するという手もあるので、切り替え頻度に応じて工夫するとよいだろう。

ちなみにCLI版はPHP5がxampp\php\php.exe、PHP4がxampp\php4\phpcli.exeである。このとき読み込むのは当該ディレクトリにあるphp.iniなので、モジュール版と同じphp.iniをCLI版にも適用したい場合はこっちにもコピーする必要がある。

なんでいまさらこんなエントリを書いたかというと、長いことサボっていたUnitTestを導入するためである。そちらについてはこちらのエントリで。

【リンク集】

PHP5.2.6(for Windows)に注意する
http://kwappa.txt-nifty.com/blog/2008/05/php526for_windo_d771.html

apache friends – xampp for windows
http://www.apachefriends.org/jp/xampp-windows.html

SourceForge.net: Files
http://sourceforge.net/project/showfiles.php?group_id=61776

XAMPP Windows版 – SoftAntenna
http://www.softantenna.com/lib/4240/index.html

質問5: PHP5 と PHP4 の切り替え方法は?
http://www.apachefriends.org/jp/xampp-windows.html#2756