php on windows ガイドラインdownload.microsoft.com/download/0/7/4/07405cb4-faa9-4220...php on...

31
PHP on Windows ガイドライン 【ドラフト版】 ~ 第 2 章: PHP 稼働環境の構築 ※本ガドランは各章の先行ドラフト版公開を行い、全章の公開後、正式版文書としてまとめを行 い、再度公開します。 第 1 版 2011/1 マクロソフト株式会社 免責事項: このドキュメントの内容は情報提供のみを目的としており、明示または黙示に関わらず、これらの情報についてマ クロソフトはいかなる責任も負わないものとします。このドキュメントに記載されている情報 (URL 等のンターネット Web サトに関する情報を含む) は、将来予告なしに変更することがあります。お客様がこのドキュメントを運用した結果の 影響については、お客様が負うものとします。別途記載されていない場合、このドキュメントで例として挙げられている企業、 組織、製品、ドメン名、電子メール ゕドレス、ロゴ、人物、地名、およびベントは、架空のものです。それらが、いずれ かの実際の企業、組織、製品、ドメン名、電子メール ゕドレス、ロゴ、人物、地名、あるいはベントを指していることは なく、そのように解釈されるべきではありません。お客様ご自身の責任において、適用されるすべての著作権関連法規に従っ たご使用を願います。

Upload: others

Post on 26-Dec-2019

6 views

Category:

Documents


0 download

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

30

まとめ

この章では、IIS7 への PHP ランタムの基本的なンストール方法と、IIS7 に用意されている

PHP のための様々な拡張機能について紹介しました。

IIS7 には、標準機能としての FastCGI をはじめ、PHP Manager、Windows Cache Extension for

PHP といった、PHP ゕプリケーションに特化した拡張機能が用意されています。これらの機能を有

効に利用することで、IIS7 上で PHP ランタムの設定や管理はにかかる工数を大幅に軽減し、ゕプ

リケーションも快適に動作させることができるようになります。