Windows Server 2003 R2にてIIS6.0+PHP5.3.2環境の設定メモ

IIS6にPHP5.3系を動かす場合には、過去のバージョンの様に設定する
だけではうまく動かないようです。
実際にphp5isapi.dllが存在してはおらず、過去バージョンと同様に
は設定出来なかったが、FastCGIを利用すると動作したのでメモ。


以下設定メモ
FastCGIのダウンロード】
http://www.iis.net/expand/fastcgi よりx86版をダウンロードしま
す。fcgisetup_1.5_rtw_x86.msiをダウンロードしたらインストールを
行います。




WindowsPHPバイナリのダウンロード】
公式サイトのWindowsバイナリ配布ページよりダウンロードする。
http://windows.php.net/download/

公式サイトには4種類のビルドが存在するが、今回は2003+IIS6って
ことで、「VC6 x86 Thread Safe」のZIPをダウンロードして入れる
事にする。

ビルドの違いについては以下のURLを参考にしました。
参考URL:
http://d.hatena.ne.jp/tanakahisateru/20090918/1253215261



PHPのインストール】
解凍したZIPのファイルを今回はC:\PHP532iisに入れました。
c:\PHPとかにした方がすんなり動くのでしょうが、あえて変更しています。



php.iniの設定】
1.PHPフォルダ内の「php.ini-production」を「php.ini」というファイル名で同一フォルダ内にコピーする。


2.PHPにアクセスを許可させるディレクトリを増やす。
 「;open_basedir =」という行を以下のように変更する。
 ※今回inetpubはDドライブなので注意
 
open_basedir="D:\inetpub\wwwroot;C:\php532iis\session;C:\php532iis\upload"


3.「C:\php532iis\session」と「C:\php532iis\upload」の各フォルダを作成する。


4.PHPエクステンションのディレクトリ位置を修正する。
 「; extension_dir = "./ext"」という行を以下のように変更する
 extension_dir = "./ext"


5.アップロードファイルの保存先を変更する。
 「;upload_tmp_dir =」という行を以下のように変更する。
 upload_tmp_dir = "C:\php532iis\upload"


6.PHP5.3系独特の設定
 「;date.timezone =」という行を以下のように変更する
 date.timezone = Asia/Tokyo


7.FastCGIのための設定
 「; fastcgi.impersonate = 1」という行を以下のように変更する。
 fastcgi.impersonate = 1

 「; cgi.fix_pathinfo=1」という行を以下のように変更する
 cgi.fix_pathinfo=1

 「; cgi.force_redirect = 1」という行を以下のように変更する
 cgi.force_redirect = 0


8.あとは必要に応じてextensionの設定等を行う。
 今回設定したのは以下のもの
 mbstring.language = Japanese
 mbstring.internal_encoding = UTF-8
 extension=php_mysql.dll
 extension=php_gd2.dll
 extension=php_mbstring.dll
 extension=php_mcrypt.dll
 ひとまずこの設定で動作するはずです。


参考URL:
http://guitarfish.wazure.jp/index.php?PHP5.3.0%E3%81%AEphp.ini%E7%B7%A8%E9%9B%86




FastCGIスクリプトを実行する】
コマンドプロンプトを開き、次のコマンドを実行します。

1.フォルダを移動します。
 cd c:\WINDOWS\system32\inetsrv


2.次のコマンドを実行します
 cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP532iis\php-cgi.exe"


3.C:\WINDOWS\system32\inetsrv\fcgiext.iniに設定内容が追記されている事を確認します。
...
[Types]
php=PHP

[PHP]
ExePath=C:\PHP532iis\php-cgi.exe



【規定のWebサイトのプロパティ変更】
1.ホームディレクトリの設定
 インターネット インフォメーション サービス (IIS) マネージャを開きます。
 Webサイト→規定のWebサイト→右クリック→プロパティ
 →ホームディレクトリタブを選択します。
 構成ボタンを押し拡張子「.php」を選択します。
 存在しない場合は「追加」ボタンを押して作成します。

 実行可能ファイル:C:\WINDOWS\system32\inetsrv\fcgiext.dll
 拡張子:php
 動詞-制限:GET,HEAD,POST
 スクリプトエンジン、ファイルの存在を確認するにチェックを付ける。





2.ドキュメントの設定
 追加を押して、「index.php」を追加します。


【動作確認】
1.念のためインターネット インフォメーション サービス (IIS) マネージャからサービスを再起動する。


2.ドキュメントフォルダ(D:\Inetpub\wwwroot)に以下の内容でphpinfo.phpというファイルを作成します。

 


3.ブラウザに以下のアドレスを入力して、PHPの情報が表示される事が確認できれば設定完了です。


【エラーが発生する場合】
PHPファイルにアクセスすると以下のエラーが発生。


FastCGI Error
The FastCGI Handler was unable to process the request.

                                                                                                                                                              • -


Error Details:


Error Number: 5 (0x80070005).
Error Description: アクセスが拒否されました。
HTTP Error 500 - Server Error.
Internet Information Services (IIS)



色々とやってみたけど、解決方法が見つからず途方にくれていましたが、解決方法を発見しました。
C:\php532iisのフォルダに対して、セキュリティ設定をしてみると正常に動作するようになりました。
通常ならIUSERとかなんでしょうけど、このマシンは途中でマシン名を変更した事でうまく設定できないみたいでした。
Everyoneを追加して、フルコントロールを設定してあげると途端に、エラーが出力されなくなりうまく動作している様です。





参考URL:
http://virtualsv.blog117.fc2.com/blog-entry-4.html