IIS で PHP のエラー内容を調べる方法

      2015/12/09

ローカルの Windows IIS に WordPress をセットアップしようとしてはまったのでメモしておきます。

事前に PHP と MySQL をセットアップし、動作しているものとして読んでください。

別の仕事(本業)で Web GIS 製品も扱うので IIS で新しくサイトを作成し、83 とか適当なポートを割り当てました。

capture1 

そこに WordPress と PHPMyAdmin をダウンロードして展開し、ブラウザからアクセスすると画面が真っ白(Firefox)、Internet Explorer だと 500 エラーを返します。

capture2

を書いた index.php を作成して該当のサーバに設置しても問題なく表示されてます。

capture3 

このせいで PHP の設定には問題ないと錯覚することになります。

仕事帰りの先輩を引き留めて見てもらうも解決できず、、、翌日へ繰り越しに。

翌日、エラー情報のトレースから始めようということでネットを検索すると以下のサイトが見つかる。

IIS7 のトレース機能を使用して失敗した要求をトラブルシューティングする
//technet.microsoft.com/ja-jp/library/dd647604.aspx

この情報を元に IIS マネージャーで以下の設定を行いました。

capture4 

  1. 作成したサイトで、[操作] ウィンドウ → [失敗した要求トレース...] をクリック
    ※「失敗した要求トレースの追加」項目がない場合は「役割サービスの追加」で「トレース」を追加してください。
  2. [Web サイトの失敗した要求トレース設定の編集] を 有効にする
    capture5
  3. サイトを選択し、[失敗した要求トレースの規則] をダブルクリック
  4. [失敗した要求トレースの規則] で右上の [操作] ウィンドウ → [追加...] をクリック
    capture6
  5. [失敗した要求トレース規則の追加] ダイアログで、[すべてのコンテンツ] をチェックして [次へ]
     capture7
  6. [どの条件で要求をトレースしますか?] で「状態コード」にチェックを入れ、"500" を入力(今回のエラーは 500 エラーなので)し、[次へ]
  7. そのまま [終了] をクリックして追加
    capture8 
  8. 再度 Web ブラウザで該当 URL にアクセスしてエラーを発生させます。その後で、2.で設定したフォルダに生成された XML を表示します。C:\inetpub\logs\FailedReqLogFiles\W3SVCxx

    capture9

FastCgiModule の Notification 128 が発生していることが分かりました。この情報を検索すると以下のサイトが見つかり、open_basedir の設定が怪しいことが判明します。

//symfoware.blog68.fc2.com/blog-entry-1077.html

今回の原因

php.ini のパラメータが以下のように設定されており、ポート83 用に切ったディレクトリが対象となってませんでした。

open_basedir = C:\inetpub\wwwroot

open_basedir = C:\inetpub と書き換えて解決!

先日引き留めた先輩曰く、

「やっぱ Apache でっせ。」

 - PC, Web