システム開発・Webサイト構築 プラスラス

2010/1/3 日曜日

【PHP】複数バージョンのPHPを切り替えてテストする

このエントリーを含むはてなブックマーク Yahoo!ブックマークに登録 Google ブックマーク del.icio.us

PHP4系と、PHP5系では仕様が大きく異なるため、両方でテストをしたいケースがあります。Apache2では、PHPIniDirで、php.iniのパスを指定できるため、PHPの複数バージョンの共存自体は問題ありません。しかし、その都度Apacheのhttpd.confを書き換えるのでは面倒です。

image

Apacheの起動引数で、設定を切り替えることが可能なので、この機能を使うと便利です。


方法1 -Dパラメータを使う

アパッチの起動パラメータで、-D パラメータ名を渡すと、IfDefineディレクティブで使うことができます。

やり方は、httpd.confの中に次のように記述しておきます。

<IfDefine php5>
#c:\php5にphp5がある場合
LoadModule php5_module C:/php5/php5apache2_2.dll
PHPIniDir "C:\php5"
</IfDefine>

<IfDefine php4>
#c:\php4にphp4がある場合
LoadModule php4_module C:/php4/php4apache2.dll
PHPIniDir "C:\php4"
</IfDefine>

コンソールでApacheを実行する場合

コマンドプロンプトで、Apacheのhttpd.exeを実行する場合は、単純に引数をつけます。

C:\> "c:\Program Files\Apache Group\Apache2\bin\httpd.exe" -D PHP5

(終了はCtrl + C)

Windowsのサービスに登録する場合

コマンドプロンプトで次のようなコマンドを実行します。(Windows VistaやWindows 7の場合は、管理者として実行)

C:\> "c:\Program Files\Apache Group\Apache2\bin\httpd.exe httpd -k install -n Apache2PHP5 -D PHP5

::Apache2PHP5は、サービス名です。好きな名前で良いです。

登録してあるサービスを削除するときは、次のようにします。

C:\> "c:\Program Files\Apache Group\Apache2\bin\httpd.exe httpd -k uninstall -n Apache2PHP5

ただし、同じアドレス・ポートで、複数のApacheは起動できないので、注意してください。逆に言うとポートを変えるなどして異なればOKです。

方法2: -fパラメータを使う

httpd.exeの起動パラメータの -fパラメータでは、httpd.confのパスを指定することができます。つまり、複数のhttpd.confを作っておいて、パラメータでそれを切り替えれば良いわけです。

実際、開発するプロジェクトによって、Document rootなどのほかの要素も変えたいことが多いので、httpd.confの雛形を作っておけば、便利です。

たとえば、E:/MyWork/PHP4/ と E:/MyWork/PHP5/ とに別々にhttpd.confを作成しておき、Apacheの起動時に切り替えます。

コンソールでApacheを実行する場合

C:\> "c:\Program Files\Apache Group\Apache2\bin\httpd.exe" -f "E:/MyWork/PHP5/httpd.conf"

::E:/MyWork/PHP5/にhttpd.confを作ってある場合

(終了はCtrl + C)

Windowsのサービスに登録する場合

C:\> "c:\Program Files\Apache Group\Apache2\bin\httpd.exe httpd -k install -n Apache2PHP5 -f "E:/MyWork/PHP5/"

::E:/MyWork/PHP5/にhttpd.confを作ってある場合

::Apache2PHP5は、サービス名です。好きな名前で良いです。

登録してあるサービスを削除するときは、先程の方法1と一緒です。

C:\> "c:\Program Files\Apache Group\Apache2\bin\httpd.exe httpd -k uninstall -n Apache2PHP5

毎回コマンドを打つのが面倒であれば、バッチファイルに保存しておくと良いでしょう。その際は、エラーが出たときにわからなくならないように、pauseコマンドを入れておくと良いです。

Filed under: PHP,Programming — Nakai @ 0:26:11

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.800 sec. Powered by WordPress