php on windows ガイドラインdownload.microsoft.com/download/0/7/4/07405cb4-faa9-4220...php on...
TRANSCRIPT
PHP on Windowsガイドライン
【ドラフト版】
~ 第 2 章: PHP 稼働環境の構築
※本ガドランは各章の先行ドラフト版公開を行い、全章の公開後、正式版文書としてまとめを行
い、再度公開します。
第 1 版 2011/1
マクロソフト株式会社
免責事項: このドキュメントの内容は情報提供のみを目的としており、明示または黙示に関わらず、これらの情報についてマ
クロソフトはいかなる責任も負わないものとします。このドキュメントに記載されている情報 (URL 等のンターネット
Web サトに関する情報を含む) は、将来予告なしに変更することがあります。お客様がこのドキュメントを運用した結果の
影響については、お客様が負うものとします。別途記載されていない場合、このドキュメントで例として挙げられている企業、
組織、製品、ドメン名、電子メール ゕドレス、ロゴ、人物、地名、およびベントは、架空のものです。それらが、いずれ
かの実際の企業、組織、製品、ドメン名、電子メール ゕドレス、ロゴ、人物、地名、あるいはベントを指していることは
なく、そのように解釈されるべきではありません。お客様ご自身の責任において、適用されるすべての著作権関連法規に従っ
たご使用を願います。
1
第 2 章 PHP 稼働環境の構築
Windows 上で PHP が稼働する環境を構築するには、PHP のランタムを入手し、Web サーバ
ー (IIS) で PHP フゔルへのリクエストに対して PHP ランタムが処理を行うよう、設定を行う
必要があります。
この章では、PHP ランタムの入手から IIS で動作させるための基本的な設定フゔルの構成、IIS
へのンストール、実際に簡単な PHP ゕプリケーションを動作させるまでの手順について説明しま
す。
PHP ランタイムの入手とインストール
PHP のランタムは、別途コミュニテゖサトからの入手が必要ですが、IIS の管理ツールである
インターネット インフォメーション サービス (IIS) マネージャー (以降、IIS マネージャー) に
は、ゕプリケーションのランタムを指定するためのユーザーフレンドリな GUI が用意されている
ため PHP ランタムの設定も簡単に行えるようになっています。
以降の文章では、PHP ランタムの入手と、IIS への動作設定を行い、PHP ゕプリケーションが
実行可能となるまでの具体的な手順を紹介します。
PHP ランタイムのインストール
IIS で PHP ゕプリケーションを動作させるには、FastCGI を追加する (※) とともに PHP のラ
ンタムを入手してンストールする必要があります。
※ IIS への FastCGI の追加方法は第 1 章を参照してください。
PHP ランタムは PHP コミュニテゖサトの以下のページからダウンロードすることができま
す。
PHP For Windows: Binaries and sources Releases
http://windows.php.net/download/
ダウンロードする PHP ランタイムの種類
ダウンロードのページには Windows 用の PHP ランタムが複数用意されていますが、以下のも
のを使用します。
VC9 x86 Non Thread Safe Zip 形式
2
FastCGI はプロセス モデルで ゕプリケーション ランタムをホストするので、PHP ランタム
は Thread Safe (スレッドセーフ) である必要はなく、パフォーマンスに優れる Non Thread Safe
のランタムを使用することができます。
ダウンロードするフゔルの種類は、zip と msi がありますが、本ドキュメントでは PHP ラン
タムの設定方法ついて説明するため zip フゔルを使用します。
PHP ランタムは 、ISAPI やその他の CGI 指定でも IIS にセットゕップすることができますが、
現在もっとも IIS 上で効率よく PHP を動作させる方式は FastCGI です。
IIS への PHP ランタイムのインストール
IIS への PHP ランタムのンストールは、ダウンロードした zip フゔルを解凍し、ゕクセス
権を設定したのちに、IIS マネージャーで詳細な設定を行います。
以下に具体的な手順を示します。なお、この手順では例として、PHP ランタムを C:\php5 に
配置するものとしています。
PHP ランタイムの設定 (php.ini の編集)
入手した PHP ランタムを zip フゔルから取り出し、構成フゔルを編集して、PHP ランタ
ムの基本的な動作を設定します。
具体的な手順は以下のとおりです。
1. コンピューターのデゖスク内の任意の場所に php5 という名前のフォルダーを作成します。
2. PHP ランタムを含む zip フゔルを解凍し、php5 フォルダーに内容をコピーします。
3. php5 フォルダー内のフゔル php.ini-recommended を php.ini に変更します。
4. テキスト エデゖターで php.ini フゔルをオープンし、コメントを解除するなど、以下の
ように設定を変更します。
a. fastcgi.impersonate=1
IIS での FastCGI は呼び出し元のクラゕントのセキュリテゖトークンの偽
装をサポートしています。これにより、IIS はリクエストを実行するセキュリテ
ゖ コンテキストを定義することができます。
b. cgi.fix_pathinfo=1
CGI の PATH_INFO/PATH_TRANSLATED サポートを提供します。
c. cgi.force_redirect=0
URL からの PHP の直接呼出しの禁止を行うための設定です。ほとんどの
Web サーバーでは、これを有効にしておく必要がありますが、IIS では安全に
無効することができます。また、機構上無効にする必要があります。
d. open_basedir
3
Web サトのルートなど PHP にゕクセスさせる最上位のデゖレクトリを指
定します。PHP スクリプトからの意図しないフゔル ゕクセスを防ぎます。
e. extension_dir
PHP のエクステンションの位置を指定します。通常、PHP 5.X.X では
extension_dir = "./ext" と設定されます。
f. 必要とする PHP 拡張に対応する行を有効にします。以下に例を示します。
extension=php_mssql.dll
extension=php_mysql.dll
設定が完了したら上書き保存し、テキストエデゖターを終了します。
以上で php.ini への基本的な設定は完了です。
php.ini のコゕ デゖレクテゖブに関するより詳しい情報は、PHP コミュニテゖ サトの以下のド
キュメントをご参照ください。
php.net -コア php.ini ディレクティブに関する説明
http://www.php. net/manual/ja/ini.core.php
PHP ランタイム フォルダーへのアクセス権の設定
IIS で PHP ゕプリケーションが動作するようにするには、IIS の動作プロセス (以降、ワーカー
プロセス) が PHP ランタムを呼び出せるよう、PHP ランタムの各フゔルでワーカー プロ
セスが使用するゕカウントに対し適切なゕクセス権を付与しておく必要があります。
ワーカープロセスが使用する既定のゕカウントは、IIS7.5 からはゕプリケーション プール名のつ
いた、ゕプリケーション プール (※) ごとに異なる仮想 ID が使用されるようになりました。
※ワーカー プロセスの動作設定の呼称。ワーカー プロセスは、ゕプリケーション プールに定義された構成によりンスタ
ンスが生成される。ゕプリケーション プールを「クラス定義」、ワーカー プロセスを「クラスのンスタンス」と考えると
理解しやすい。ワーカー プロセスの定義内容は IIS マネージャーから確認できる。
仮想 ID は、コンピューター上に実際には存在しない文字通り「仮想」のゕカウントであるため、こ
れに対し直接のゕクセス権設定は行うことはできません。その代わりにセキュリテゖ グループ
IIS_IUSRS に対してゕクセス権設定を行うことで、ゕプリケーション プールごとに各々異なる仮
想 ID をまとめて管理することができます。IIS_IUSRS は IIS で使用されるビルトン グループ
です。
セキュリテゖ グループ IIS_IUSRS に読み取り権限を付与する具体的な手順は以下の通りです。
1. php5 フォルダーを右クリックし、マウス ポンターに表示されるコンテキスト メニュー
から [プロパテゖ] を選択します。
4
2. [プロパテゖ] ダゕログ ボックスを表示されるので [セキュリテゖ] タブをクリックしま
す。
3. [セキュリテゖ] タブ内の [編集] ボタンをクリックします。
4. [php5 のゕクセス許可] ダゕログ ボックスが表示されるので、同ダゕログボックス内
[セキュリテゖ] タブ中の [追加] ボタンをクリックします。
5. [ユーザー、コンピューター、サービスゕカウントまたはグループの選択] ダゕログ ボッ
クスが表示されるので、同ダゕログ内 [場所の指定] がコンピューター名になっているこ
とを確認し、なっていない場合は [場所] ボタンをクリックしてコンピューター名に変更し
ます。
6. 同ダゕログ ボックス内の [選択するオブジェクト名を入力してください] ボックスに
iis_iusrs と入力し [名前の確認] ボタンをクリックし、ボックスの内容が以下のように変
わるのを確認し [OK] ボタンをクリックします。
コンピューター名\IIS_IUSRS
以上で IIS が使用する動作ゕカウントへの PHP ランタムへのゕクセス権の設定は完了です。
IIS への PHP ランタイムの登録
ハンドラー マッピング
PHP フゔルのスクリプトを、PHP ランタムに処理させるためには、IIS で拡張子 .php への
リクエストを php ランタムに送るよう設定する必要があります。
この、拡張子に対するリクエストの処理(ハンドリング)とランタムへのマッピングをハンドラ
ー マッピングと言い、IIS 管理ツールにはハンドラー マッピングを行うための機能が用意されてい
ます。
ハンドラー マッピングのスコープ
ハンドラー マッピングは Web コンテンツの公開場所である Web サイト、仮想ディレクトリ、
アプリケーションにそれぞれ設定することができます。
Web サイトとそこに含まれる 仮想ディレクトリ、アプリケーションの設定は、継承関係にあるた
め、公開場所の最上位である Web サイトで PHP のハンドラー マッピングを行った場合は、それ
以下にあるすべての仮想ディレクトリ、および アプリケーションで PHP ゕプリケーションが実行可
能となります。
5
図 1 : IIS の構成ツリー
また、ハンドラー マッピングの設定を、各々個別に行うこともできますので、たとえば特定の仮想
ディレクトリでのみ PHP ゕプリケーションの実行を有効にしたり、複数のアプリケーションを作成
し、各々異なるバージョンの PHP ランタムを指定したり、ASP.NET ゕプリケーションと共存さ
せることも可能です。
ハンドラーマッピングの指定を行うには IIS マネージャーを使用します。
以下に IIS マネージャーを使用したハンドラーマッピングの具体的な手順を示します。
なお、設定を行う環境は以下を前提としています。
PHP ランタイムの場所 C:\php5
仮想ディレクトリ Default Web Site/php
仮想ディレクトリの物理パス C:\inetpub\wwwroot\php
表 1 : 設定例が前提としている環境
IIS マネージャーでのハンドラー マッピング設定手順
1. [スタート] ボタンをクリックし、[管理ツール] – [ンターネット ンフォメーション サー
ビス (IIS) マネージャー] を選択して起動します。
2. 画面左のツリービューでコンピューター名をクリックし、[(コンピューター)] – [サト] -
[Default Web Site] を展開し、仮想デゖレクトリ php を選択します。
3. 画面中央の パネルが [機能ビュー] となっていることを確認し、同パネルの [ハンドラー マッ
ピング] のゕコンをダブルクリックします。
6
図 2 : IIS マネージャー [機能ビュー]
4. [ハンドラー マッピング] の画面が表示されるので、画面右の [操作] パネルより [モジュール
マップの追加..] リンクをクリックします。
図 3 : ハンドラー マッピング [モジュール マップの追加] メニュー
5. [モジュール マップの追加] ダゕログ ボックスが表示されるので、各項目を以下のように設
定し [OK] ボタンをクリックします。
7
図 4: モジュール マップの追加ダイアログ ボックス
以上で、IIS7 で PHP ゕプリケーションを動作させるための設定は完了です。作成したフォルダー
に有効な PHP ゕプリケーションを配置してホストすることができるようになります。
サンプルの実行
IIS7 で PHP ゕプリケーションを動作させるには FastCGI モジュールと PHP ランタムを使
用して正しくハンドラー マッピングがされた仮想デゖレクトリにゕプリケーションとして有効な
PHP スクリプト フゔルを配置するだけです。
PHP ゕプリケーションが実行可能であるかどうかは、以下の手順で確認することができます。
確認手順
1. テキスト エデゖターを [管理者として実行] し、以下のコードを貼り付けて info.php という名
前で保存します。
<?php phpinfo(); ?>
2. 作成した info.php フゔルを前出の手順でハンドラー マッピングの設定を行った以下のフォ
ルダーにコピーします。
C:\inetpub\wwwroot\php
3. Web ブラウサーを起動し、以下の URL にゕクセスします。
http://localhost/php/info.php
8
以下のような PHP ランタムの情報がブラウザーに表示されることを確認してください。
図 5 : phpinfo関数の出力を確認
複数の PHP バージョンをインストールする場合
IIS では Web サト、ゕプリケーションという単位で、バージョンの異なる複数の PHP ランタ
ムをホストすることができます。
これは配置するゕプリケーションにランタム バージョンの制限がある場合などに便利です。
バージョンの異なる PHP ランタムをホストする場合の設定手順は、前述した新規での IIS マネ
ージャーによるランタムの指定手順と違いはありません。
PHP ランタムのバージョンごとに異なるフォルダーを用意し、IIS マネージャーの [ハンドラー
マッピング] で、任意のバージョンのフォルダー内にある php-cgi.exe を参照することで、複数の
バージョンの PHP ランタムをホストすることができます。
9
エラーログ
PHP ゕプリケーションのエラーログを取得するには、php.ini フゔルの error_log デゖレク
テゖブで、エラーを出力するためのフゔルを指定しておく必要があります。
以下に設定例を示します。
例 ) PHP ゕプリケーションのエラーログを、パス C:¥webApplogs 下に php_error.log と名前の
フゔルに出力するように指定
log_errors = On
error_log = "C:¥WebApplogs¥php_error.log"
また、FastCGI ハンドラーや PHP ランタムのエラーに関しては、エラーの情報をベント ロ
グとして出力する場合もありますので、適宜、ベント ビューゕーを使用してベント ログを確認
してください。その場合、「PHP」、「FastCGI」 をキーワードとして、ベント ログ リストを検
索すると、目的のベント ログを探しやすくなります。
10
コラム : Web Platform Installer (Web PI)を使用したインストール
Web Platform Installer (以下 Web PI) は、マクロソフトが無償で公開している統合ンス
トーラーです。
図 6 : Web PI の画面
Web PI を使用すると、Windows 上に IIS を基盤とした Web のホステゖング環境を作成すると
ともに WordPress や Xoops といったメジャーな OSS Web ゕプリケーションをユーザー フレ
ンドリな GUI を使用して簡単にンストールすることができます。
この OSS Web ゕプリケーションのンストール動作は、ゕプリケーションのフゔルの取得と配
置のみならず、ゕプリケーションが必要とするランタムやデータベースゕプリケーションのメー
ジの取得やンストールも同時に行います。
たとえば、プレーンな 状態の Windows に Web PI を使用して WordPress をンストールする
と、WordPress のゕプリケーションメージのほかに、IIS 、PHP ランタム、MySQL、MySQL
Connector .Net、Windows Cache Extension for PHP がンストールされます。
それらの一連のンストールは、おのおの独立しながらもシームレスに行われ、Web PI のンス
トールウゖザードが終了した直後から WordPress を使用することができるようになっています。
Web PI は OSS Web ゕプリケーションのンストールだけでなく、PHP ランタムのみのンス
トールにも使用することができます。
11
IIS マネージャーからの PHP ホスト環境の管理
IIS7 の IIS マネージャーには PHP ランタム、および FastCGI の管理を行うための拡張機能
が用意されています。
これら拡張機能を使用すると、IIS マネージャーが提供するユーザー フレンドリな GUI を使用し
て、FastCGI、PHP ランタムの設定作業や、バージョンの切り替え作業などを行うことができます。
ここでは IIS マネージャーから利用可能な PHP 関連の設定機能について説明します。
FastCGI の設定
IIS マネージャーの [FastCGI の設定] 機能を使用すると、FastCGI がホストするゕプリケーショ
ン プロセスについて、動作に関する様々な設定を行うことができます。
[FastCGI の設定] 機能を使用して FastCGI の設定を行うには、以下の手順を実行します。
1. IIS マネージャーを起動します。
2. 画面左の [接続] ペンでサーバー名を選択します。
3. 画面中央のワーク スペース、[機能] ビューから [FastCGI の設定] ゕコンをダブル クリ
ックします。
4. FastCGI で動作するよう登録されているゕプリケーション ランタムの一覧が表示される
ので、設定を行いたいランタムを選択し、画面右の [操作] ペンから [編集] リンクをク
リックします。
図 7 : FastCGIの設定リスト
5. [FastCGI ゕプリケーションの編集] ダゕログ ボックスが表示され、プロパテゖを任意で
設定することができます。
12
図 8 : FastCGI の設定画面
各プロパテゖと概要は以下のとおりです。
プロパティ 概要
1 分間あたりのラビット フェール FastCGI ハンドラーでプロセスがオフランになるまでの 1 分間の FastCGI プロ
セス エラー数を指定します。既定値は 10 です。
ゕドル タムゕウト ゕプリケーションの FastCGI プロセスがゕドル状態になり、その後ゕドル プロ
セスが終了するまでの時間間隔を指定します。既定値は 300 (秒) です。
ゕクテゖビテゖ タムゕウト
ゕプリケーションの FastCGI プロセスが IIS との通信なしで実行し、タムゕウト
するまでの最大時間を指定します。このタムゕウトにより、ハングゕップしたプロセ
スを検出してシャットダウンできます。既定値は 30 (秒) です。
キューの長さ
FastCGI ゕプリケーション プールのキューに入れることができる要求数の最大値を
指定します。キューがいっぱいの場合、それ以降の要求によってクラゕントに HTTP
エラー コード 503 (サービスを使用できません) が返されます。これは、ゕプリケー
ションがビジーであることを示しています。既定値は 1000 です。
FlushNamedpipe
名前付きパプが、各要求の終了時とゕプリケーションをシャットダウンする前にフラ
ッシュされるかどうかを指定します。名前付きパプがフラッシュされると、値は true
に設定されます。既定値は false です。このプロパテゖは、名前付きパプ プロトコ
ルの使用時にのみ適用されます
プロトコル
FastCGI プロセスとの通信に使用するプロトコルを指定します。Protocol プロパテゖ
に使用できる値には、[0 (NamedPipe)] または [1 (TCP)] があります。既定値は 0
(NamedPipe) です。
13
プロパティ 概要
要求タムゕウト
ゕプリケーションへの要求を処理できる最長時間を指定します。1 つの要求にかかる
FastCGI プロセスの処理時間が指定された時間よりも長くなると、処理は終了します。
既定値は 90 (秒) です。
ンスタンスへの MaxRequests
FastCGI プロセス リサクル動作を制御します。プロセスがリサクルされるまでに
FastCGI ゕプリケーションで処理できる最大要求数を指定します。既定値は 200 で
す。
フゔルへの変更の監視
FastCGI が監視するフゔルのパスを指定します。フゔルが変更されると、FastCGI
プロセスのリサクルが行われます。ここでは、絶対パスと FastCGI 実行可能フゔ
ルの場所への相対パスも指定できます。このプロパテゖは、Windows 7 および
Windows Server® 2008 R2 のみに適用されます。
環境変数 プロセス実行可能フゔル プログラムで設定される環境変数のコレクションを指定し
ます。
最大ンスタンス数
選択された FastCGI ゕプリケーションのゕプリケーション プロセス プールに格納
できる FastCGI プロセス数の最大値を指定します。この数は、FastCGI ゕプリケー
ションで処理できる同時要求数の最大値でもあります。既定値は 4 です。
Windows® 7 および Windows Server® 2008 R2 オペレーテゖング システムの場
合に限り、MaxInstances プロパテゖを 0 に設定すると、IIS で自動的に現在の実行
環境における FastCGI プロセス数の最適値が選択されます。
標準エラーモード
このプロパテゖは、Windows 7 および Windows Server® 2008 R2 オペレーテゖ
ング システムのみに適用されます。
FastCGI プロセスによって報告されたエラーの処理方法を指定します。次のオプショ
ンが存在します。
ReturnStderrIn500 - このモジュールでは、状態コードが 500 に設定さ
れ、STDERR で応答として受信されるメッセージが送信されます。これは既
定値であり、この動作は IIS と同じです。
ReturnGeneric500 - このモジュールでは、状態コードが 500 に設定さ
れますが、一般的な 500 エラー メッセージが返されます。この構成は、サ
ーバーで詳細なエラー ログを有効にしながら、記録されたエラーをユーザー
に返さないようにする場合に便利です。
IgnoreAndReturn200 - このモジュールでは、状態コード 200 で
STDOUT で応答として受信されるメッセージが送信されます。STDERR ス
トリーム上のテキストは無視されます。このプロパテゖは、追跡のためにス
テートメントをデバッグする場合に便利です。
TerminateProcess - このモジュールでは、FastCGI プロセスが終了し、
一般的な 500 エラー メッセージが返されます。
表 2: FastCGI の設定パラメータ
14
PHP ランタイムの設定 ( PHP Manager )
IIS には、Web サトが使用する PHP ランタムのバージョンを簡単に切り替えたり、ランタ
ムの設定を IIS マネージャーから行うための拡張モジュール PHP Manager for IIS (以降、IIS
Manager) が用意されています。
図 9 : PHP Manager 画面
PHP Manager を使用すると、PHP ランタムのバージョンの切り替えや、構成フゔル
(php.ini) の編集をユーザー フレンドリな GUI を使用して行うことができます。
PHP Manager の入手とインストール
PHP Manager は以下の URL から入手することができます。
PHP Manager for IIS
http://phpmanager.codeplex.com/
ダウンロードされたフゔル PHPManagerForIIS-1.1.0-x86.msi をダブルクリックし、セッ
トゕップ ウゖザードのガドに従いンストールを行ってください。
ンストール後、IIS マネージャーを起動すると、ワーク スペースの [機能ビュー] 内に PHP
Manager のゕコンが作成されているのが確認できます。
15
図 10 : [機能ビュー] 内の PHP Manager のアイコン
PHP Manager の使用
PHP Manager を使用して PHP ランタムの設定を行うには、IIS マネージャーを起動し、画面
左の [接続] ペンでサーバー名を選択します。
画面中央のワーク スペースの [機能ビュー] から [PHP Manager] のゕコンをダブル クリッ
クします。
PHP Manager の提供する機能は、以下の 3 つのセクションに別けられて提供されます。
・ PHP Setup
・ PHP Settings
・ PHP Extensions
以降、前述の 3 つのセクションで提供される機能について説明します。
[ PHP Setup ] セクション
PHP ランタイムの登録
既定の状態の IIS では PHP ランタムの登録は、IIS マネージャーの [ハンドラーマッピング]
を使用して行いますが、PHP Manager がンストールされている環境ではこれを使用して PHP ラ
ンタムの登録を行うことができます。
PHP Manager を使用すると [ハンドラーマッピング] を使用するよりも少ない手順で PHP ラン
タムの登録を行うことができます。
PHP Manager を使用して PHP ランタムを登録する具体的な手順は以下の通りです。
手順
1. IIS マネージャーの [接続] ペンで任意の Web サトかゕプリケーション、もしくは仮想
デゖレクトリを選択します。
2. [機能ビュー] から [PHP Manager] ゕコンをダブル クリックします。
16
3. PHP Manager の画面が表示されるので、 [PHP Setup] セクション内の [Register PHP
version] リンクをクリックします。
図 11 : PHP Manager [PHP Setup] セクション
4. [Register New PHP version] ダゕログ ボックスが表示されるので、[…] (ブラウズ) ボタ
ンをクリックして、PHP ランタム中のフゔル php-cgi.exe を指定し [OK] ボタンをクリ
ックします。
図 12 : PHP Manager – PHP ランタイム登録ダイアログボックス
以上で、PHP Manager を使用した PHP ランタムの登録は完了です。
PHP Manager には、複数の PHP ランタムを登録することができるので、バージョンや、構成
フゔルの内容の異なるものを複数登録しておき、用途に合わせて使用するランタムを切り替える
ということができます。
PHP Manager での PHP ランタムの具体的な切り替え方法については、以降の PHP ランタイ
ムの切り替え で説明します。
既存の PHP のインストール構成の検証と問題の修正
IIS と PHP には、IIS 上で PHP が適切に動作するために設定すべきいくつかの項目があり、こ
れには推奨設定があります。PHP Manager は、すべての推奨設定が正しく設定されているかチェ
ックを行い、設定が正しく構成されていないものがある場合は、警告メッセージを表示します。
17
図 13 : PHP ランタイムが推奨設定と異なる場合のメッセージ
警告メッセージ内の [ View Recommendations ] リンクをクリックすると、[Configuration
Recommendations] ダゕログ ボックスが表示されます。
図 14 : [Configuration Recommendations] ダイアログボックス
[Configuration Recommendations] ダゕログ ボックスでは、検出された問題の詳細と推奨さ
れる設定を確認するとともに、修正することもできます。
PHP バージョンの切り替え
複数のバージョンの PHP ランタムを IIS に登録することで、PHP Manager を使用して、サー
バー、サト、およびゕプリケーション レベルでの PHP ランタムのバージョンを簡単に切り替え
ることができます。
PHP Manager を使用して PHP ランタムのバージョンを変更するには、PHP Manager 画面中
の [PHP Setup] セクション内の [Change PHP version] リンクをクリックします。
18
図 15 : PHP Manager [PHP Setup] セクション
[Change PHP version] ダゕログ ボックスが表示されるので、[Select PHP version] ドロップ
ダウン リストボックスから任意のバージョンの PHP ランタムを選択し、[OK] ボタンをクリック
します。
図 16 : PHP Manager – PHP ランタイムの選択画面
以上で、PHP ランタムのバージョンの切り替えは完了です。
この機能は、PHP ランタムのバージョンが同じであっても、構成フゔル ( php.ini ) の内容
や、エクステンションのバージョンが異なる、という場合にも使用することができます。その場合は、
PHP ランタムのフォルダーを必要な分コピーし、各々のフォルダー内で独自の設定を行い PHP
Manager の [Register New PHP version] リンクを使用して登録を行ってください。
phpinfo 関数によるランタイム情報の表示
PHP の phpinfo 関数は、PHP の実行時の構成の側面すべてについての、非常に詳細な情報を提供
します。
PHP Manager で phpinfo 関数の出力を表示するには、[Check phpinfo()] リンクをクリックし
ます。
19
図 17 : PHP Manager [PHP Setup] セクション
Web サトと URL を選択するダゕログ ボックスが表示されるので、内容を確認し [OK] ボタ
ンをクリックします。
図 18 : phpinfo 関数実行の URL 選択画面
phpinfo 関数の出力結果が IIS マネージャーのワーク スペース内に表示されます。
図 19 : phpinfo 関数の出力結果
20
phpinfo 関数は PHP Manager によって呼び出されるため、phpinfo 関数の出力結果を得るため
に、スクリプト フゔルを記述して配置する必要はありません。
PHP Manager の phpinfo 機能を使用することで、「スクリプト フゔルへ意図せぬ第三者がゕ
クセスしてサーバーの情報が漏れる」といった危険性を回避することでできます。
[ PHP Settings ] セクション
PHP 構成フゔルとエラー ログ フゔルの参照
PHP Manager の [PHP Setting] セクションの php.ini フゔルと、php-error.log フゔルの
パスをクリックするとそれぞれのフゔルがメモ帳 (Notepad) でオープンされます。
図 20 : PHP Manager [PHP Settings] セクション
エラー レポートの設定
PHP Manager を使用して、PHP のエラー レポート レベルを構成することができます。
PHP Manager の [PHP Error Reporting] 機能を使用するには、 [PHP Setting] セクションの
[Configure error reporting] リンクをクリックします。
図 21 : PHP Manager [PHP Settings] セクション
[PHP Error Reporting] の画面が表示されるので、用途に合わせて設定を行います。
表示されるオプションは以下の 2 つです。
1. Development machine
21
IIS が開発マシン上で使用される場合は、多くの場合、 PHP ゕプリケーションからの全ての
エラーと警告、通知をすぐに確認できるよう、詳細なレポートを使用します。
2. Production machine
IIS がプロダクション(運用環境) サーバーで使用される場合、エラー報告レベルはそれほど
詳細でなく、エラーはログ フゔルに記録され、クラゕントには通知されないようにします。
図 22 : エラー報告レベルの指定画面
[PHP Error Reporting] の設定が完了したら画面右の [操作] ペンの [適用] リンクをクリック
します。
PHP ランタイムの制限値の設定
PHP Manager では [PHP Runtime Limits] ページから PHP ランタムの各種属性の制限値を指
定することができます。
[PHP Runtime Limits] ページを表示するには、 [PHP Setting] セクションの [Set runtime
limits] リンクをクリックします。
22
図 23 : PHP Manager [PHP Settings] セクション
[PHP Runtime Limits] ページに php.ini 内で設定されている各種属性の制限値が表示されます。
各属性の意味については、グリッドを選択するたびに画面下部に説明が表示されるので参考にして
ください。
図 24 : PHP ランタイムの制限値の設定
設定が完了したら、画面右の [操作] ペンで [適用] リンクをクリックします。
すべての PHP 設定の構成
PHP Manager の [PHP Setting] のページでは、PHP ランタムのすべての設定を構成すること
ができます。
[PHP Runtime Limits] ページを表示するには、 [PHP Setting] セクションの [Set runtime
limits] リンクをクリックします。
23
図 25: PHP Manager [PHP Settings] セクション
[PHP Settings] ページが表示され、PHP ランタムのすべての属性について、値の設定、属性そ
のものの追加や削除を行うことができます。
図 26 : PHP ランタイムの属性リスト
なお、各種属性の意味については、属性を表すカラム選択後に表示される、画面右の [操作] ペ
ンの [Edit] リンクをクリックした際に表示される [Edit PHP Setting] ダゕログ ボックス内の
[Lean more about this setting] リンクをクリックします。PHP コミニュテで用意されている各
属性の説明ページが表示されます。
24
図 27 : PHP ランタイムの属性設定画面
[ PHP Extensions ] セクション
PHP 拡張の有効化と無効化
PHP Manager の [PHP Extensions] のページでは、追加されている PHP 拡張の有効、無効を指
定することができます。
[PHP Extensions] ページを表示するには、 [PHP Setting] セクションの [Enable or disable an
extension ] リンクをクリックします。
図 28 : PHP Manager [PHP Extensions] セクション
PHP 拡張の有効、無効の切り替えは、画面右の [操作] ペンの [Enable] 、[Disable] リンクを
クリックして行います。また、[Add…] リンクをクリックすると、新しく PHP 拡張を追加すること
ができます。
25
図 29 : PHP 拡張の有効/無効 設定画面
PHP 拡張の追加
PHP Manager の [PHP Setting] セクションにある [Add an extension] リンクをクリックする
と PHP 拡張を追加するためのダゕログ ボックスが表示されます。
図 30 : PHP Manager [PHP Extensions] セクション
ブラウズボタン […] をクリックし、PHP 拡張のフゔルを参照すると、PHP 構成フゔル
(php.ini) に PHP 拡張の設定が追加されます。
図 31 : PHP 拡張の追加ダイアログボックス
26
PHP アプリケーションの性能を向上させる仕組み
IIS には、PHP ゕプリケーションの性能を向上させるための拡張機能 Windows Cache
Extension for PHP が用意されています。
Windows Cache Extension for PHP は、IIS7 上で動作する PHP ゕプリケーションの性能を向
上する PHP ゕクセラレーターです。
PHP ゕプリケーションでは、コードを変更することなく、Windows Cache Extension for PHP の
機能を活用することができます。
Windows Cache Extension for PHP の機能
Windows Cache Extension for PHP は PHP ゕプリケーションの応答性能を向上させるために、
以下の機能を提供します。
・ PHP 5.2 および PHP 5.3 のサポート
・ 構成可能なフゔル キャッシュ
・ 構成可能な PHP オペコード (Opcode) キャッシュ
・ 相対フゔル パス キャッシュ
・ キャッシュの状態に関する情報を取得する PHP 関数
Windows Cache Extension for PHP の特徴
Windows Cache Extension for PHP の各機能が、PHP ゕプリケーションもたらす効果には、以
下のようなものがあります。
PHP バイトコードのメモリーキャッシュ
Windows Cache Extension for PHP では、PHP スクリプトをコンパルした PHP バトコード
(Opcode = オペコード ) がメモリーに保存されます。この PHP バトコードは、それ以降同じ
PHP スクリプトを実行する際に使用できるため、PHP ゕプリケーション全体のパフォーマンスが向
上します。
ファイル キャッシュによるファイル システムの I/O オーバーヘッドの削減
Windows Cache Extension for PHP を使用すると、PHP スクリプトをリモート UNC フゔル
共有 (ネットワーク共有) に保存する際のフゔル操作の待ち時間が短縮されます。Windows Cache
Extension for PHP には、PHP スクリプト フゔルの内容を共有メモリーに保存する際に使用する
フゔル システムのキャッシュが含まれています。これにより、PHP エンジンによるフゔル シス
テム操作の回数が低減します。
27
相対ファイル パス キャッシュによる絶対パスへの冗長マッピングの回避
Windows Cache Extension for PHP では、相対パスと絶対パスとの関係がキャッシュされるため、
PHP エンジンによって解決される相対パスの数が減ります。絶対パスへの変換が一度しか実行されな
いので、多数の相対パスを使用する PHP ゕプリケーションではパフォーマンスが高速化します。
Windows Cache Extension for PHP のインストール
Windows Cache Extension for PHP をンストールするには、以下の URL から使用する PHP
のバージョンに合わせたモジュールをダウンロードします。
IIS TechCenter - Windows Cache Extension for PHP
http://technet.microsoft.com/ja-jp/iis/ee854989.aspx
ダウンロードされた msi フゔルを実行すると、解凍先を指定するダゕログボックスが表示さ
れるので、任意のフォルダーを指定し、[OK] ボタンをクリックしてフゔルを取り出します。
Windows Cache Extension for PHP の msi に含まれているフゔルの内訳は以下のとおりです。
フゔル名 説明
php_wincache.dll Windows Cache Extension for PHP 拡張モジュール
wincshe.php Windows Cache Extension for PHP の統計情報を表示するページ
wincache_license.rtf ラセンス条項
wincache_readme.htm Windows Cache Extension for PHP を説明するドキュメント
表 2 : Windows Cache Extension for PHP の msi に含まれるファイル
解凍された内容から php_wincache.dll を取出し、PHP の拡張モジュール用フォルダーにコピ
ーします。 このフォルダーは、既定では PHP ランタムのフォルダー内にある "ext" という名前
のフォルダーです。
図 32 : Windows Cache Extension for PHP の msi 解凍イメージ
php.ini フゔルをテキスト エデゖターでオープンし、フゔルの最後に以下の行を追加します。
28
extension = php_wincache.dll
php.ini フゔルを保存して終了した後、設定した内容を適用するため IIS マネージャーを使用
して、ゕプリケーション プールをリサクルします。
以上で、Windows Cache Extension for PHP のンストール作業は完了です。
Windows Cache Extension for PHP が有効になっているか否かについては、phpinfo 関数の実行
結果から確認することができます。
Windows Cache Extension for PHP が有効な環境では、 phpinfo 関数の出力結果に WinCache
の設定項目が含まれます。
図 33 : phpinfo 関数の出力結果内の wincache 設定
Windows Cache Extension for PHP のキャッシュ統計情報の表示
Windows Cache Extension for PHP の msi には、Windows Cache Extension for PHP のキャ
ッシュの統計情報を表示するための PHP スクリプト フゔル wincache.php が含まれています。
wincache.php の実行前の準備
wincache.php には認証を行うためのコードが記述されているためキャッシュの統計情報を表示
かることはできません。認証設定を行うには、wincache.php をテキスト エデゖターで開き、定数
USERNAME と PASSWORD の値を有効なゕカウントのものに変更します。
また、検証の目的で一時的に認証処理をバパスしたい場合は、41 行目の define 文の第 2 引数
を以下のように 1 から 0 に変更します。
define('USE_AUTHENTICATION', 1); ⇒ define('USE_AUTHENTICATION', 0);
認証情報の設定完了後、wincache.php を Windows Cache Extension for PHP が正しくンス
トールされた Web サトに配置し、Web ブラウザーからゕクセスします。
なお、wincache.php の既定の設定では、Web サトは匿名認証が有効である必要があります。
IIS 側の認証と組み合わせる場合には、wincache.php 内のコメントに従い PHP コードを編集し
てください。
29
図 34 : wincache.php の出力結果の一部
wincache.php を恒常的に使用する場合には必ず、PHP 組み込みの認証、あるいは IIS の何等か
の認証を設定し、意図しないゕクセスから保護する必要があります。
本ドキュメントでの Windows Cache Extension for PHP の説明については以上です。さらに詳細
な情報については、Windows Cache Extension for PHP の msi に同梱されている
wincache_readme.htm の内容をご参照ください。
また、PHP コミュニテゖにも Windows Cache Extension for PHP についてのドキュメントが用
意されていますので、併せてご覧ください。
PHP - PHP 用の Windows キャッシュ
http://www.php.net/manual/ja/book.wincache.php