Microsoft Windowsの最近のブログ記事

PHP のバージョン毎のチェックを楽に

Apache HTTP Server の Windows 版には、Apache Service Monitor という、タスクバーから Apache を制御できる便利なユーティリティが備わっています。このユーティリティは、Windows サービスに登録された Apache のサービスを制御するものです。これを利用して、バージョンの異なる PHP を切り替えて実行できる環境を整えてみるお話です。

Apache Service Monitor のウィンドウ

手順

  1. PHP のインストール
  2. PHP の設定
  3. Apache 2.2 のインストール
  4. Apache 2.2 の設定
  5. Windows サービスへの登録
  6. Windows サービスの補足
PHP のインストール

PHPPHP: Downloads から、適当なバージョンをダウンロードします。Windows Binaries 版を使うと、手抜きができて最高です。自分は次の図のように C:\PHP へバージョン別にぶち込んでいます。

PHP のインストール パス

PHP の設定

それぞれインストールした場所の php.ini を適当に変更します。

; 拡張が必要ならば…
extension_dir = "C:\PHP\5.2.3\ext"
extension=php_mbstring.dll
extension=php_pdo.dll

同じバージョンで複数の php.ini を使い分けたい場合は、後述の Apache 2.2 の設定 にて指定する事が可能です

Apache 2.2 のインストール

Apache HTTP Server Projectダウンロード ページ から、適当なバージョンをダウンロードします。Win32 Binary (MSI Installer) 版を使うと、手抜きができて最高です。

この後の手順では、Apache HTTP Server をインストールしたパスを C:\Program Files\Apache Software Foundation\Apache2.2 として進めます。

Apache 2.2 の設定

C:\Program Files\Apache Software Foundation\Apache2.2\conf\http.conf を開き、次の2行を末尾に追加します。

# PHP configuration
Include conf/extra/php.conf

C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\php.conf を作成し、次のルールで記述します。

<IfDefine パラメータ名>
    ディレクティブ
</IfDefine>

パラメータ名 は適当な名前で ok です。IfDefine ディレクティブは、Apache が起動された時に、指定したパラメータ名が定義されていれば内包するディレクティブを有効にします。 ディレクティブ には、PHP モジュールに関する設定を記述します。以下に一例を上げます。

# latest version on major 5
<IfDefine PHP5>
    LoadFile "C:\PHP\5.2.3\php5ts.dll"
    LoadModule php5_module "C:\PHP\5.2.3\php5apache2_2_filter.dll"
    AddInputFilter PHP php
    AddOutputFilter PHP php
    PHPINIDir "C:\PHP\5.2.3"
</IfDefine>

# latest version on major 4
<IfDefine PHP4>
    LoadFile "C:\PHP\4.4.7\php4ts.dll"
    LoadModule php4_module "C:\PHP\4.4.7\sapi\php4apache2.dll"
    AddType application/x-httpd-php .php
    PHPINIDir "C:\PHP\4.4.7"
</IfDefine>

# specified 5.1.6
<IfDefine PHP5_1_6>
    LoadFile "C:\PHP\5.1.6\php5ts.dll"
    LoadModule php5_module "C:\PHP\5.1.6\php5apache2_2.dll"
    AddType application/x-httpd-php .php
    PHPINIDir "C:\PHP\5.1.6"
</IfDefine>

IfDefine ディレクティブのパラメータ名については、次の Windows サービスへの登録 へ進んで下さい。

モジュールが必要とするファイルは、LoadFile ディレクティブであらかじめ読み込んでおきます。

PHP モジュールが使用する php.ini ファイルは PHPINIDir ディレクティブで指定できます。

Windows サービスへの登録

Windows サービスへ Apache を登録するには、コマンドプロンプトから次のコマンドラインを実行します。

httpd -k install -n "サービス名" -Dパラメータ名
-k install
このオプションは、Windows サービスへ Apache を登録する事を表します。
-n "サービス名"
このオプションは、登録するサービスの名前を表します。
-D パラメータ名
このオプションは、IfDefine ディレクティブで使用するパラメータ名を表します。

試しに、PHP 5 用のサービスを登録します。コマンドプロンプトを起動して、次のように打ちます。

C:\Program....\Apache2.2\bin>httpd -k install -n "Apache2.2 with PHP5" -D PHP5

登録に成功したの図。

実際に登録されているかどうかは、[コントロール パネル] → [管理ツール] → [サービス] を開いて確かめます。(同じ画面を Apache Service Monitor の [Services] ボタンからでも開けます。)

サービス一覧。

自分が登録した Apache2.2 with PHP5 がきちんとありました。もし表示されていなければ F5 キーで画面を更新して下さい。それでも表示しなければ登録できていません。ちなみに Apache2 はインストーラが登録したサービスです。

間違ったサービス名で登録してしまったり、削除したい場合は次のコマンドラインを実行します。

httpd -k uninstall -n "サービス名"
-k uninstall
このオプションは、Windows サービスから Apache を削除する事を表します。
-n "サービス名"
このオプションは、削除するサービスの名前を表します。

サービスへの登録が終わると、Apache Service Monitor にも反映されます。

新しいサービスが登録された Apache Service Monitor。

これで、タスクバーのアイコンから切り替えが行えるようになりました。

Windows サービスへの登録についての詳しいドキュメントは、Apache HTTP サーバ バージョン 2.2 ドキュメント 内のプラットフォーム固有の情報、 Microsoft Windows 内の Running Apache as a Service にあります。

Windows サービスの補足

登録したサービスは Windows 起動時に自動的に実行されます。これを、自分で指定したタイミングで起動させる方法は次の通りです。

[コントロール パネル] → [管理ツール] → [サービス] を開いて、目的の Apache サービスを選択し、プロパティを表示します。スタートアップの種類を手動にすると、サービスは Apache Service Monitor で開始を選ぶまで開始しません。自動にすると、 Windows 起動時にサービスも開始します。無効にするとサービスを実行不可能にします。

サービスのプロパティ画面。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMicrosoft Windowsカテゴリに属しているものが含まれています。

前のカテゴリはEclipseです。

次のカテゴリはSubversionです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Microsoft Windows: 月別アーカイブ

Powered by Movable Type 4.12