IIS7 で PHP エラーを表示および記録するにはどうすればよいですか?

IIS7 で PHP エラーを表示および記録するにはどうすればよいですか?

IIS 7 サーバーで PHP 5.2.5 を実行していますが、PHP エラーを表示できない問題が発生しています... 現時点では、PHP エラーが発生するたびに、サーバーから「内部サーバー エラーが発生したため、ページを表示できません」というメッセージとともに 500 エラーが返されます。

これは本番環境の Web サイトには適した設定かもしれませんが、開発サーバーでは非常に煩わしいものです... ;-)

php.iniエラーを画面に表示し、特定のフォルダーに記録するように構成しようとしましたが、サーバーがすべてのエラーを事前にキャッチし、PHP による処理を防止しているようです...

IIS で画面に PHP エラーを表示させるにはどうすればよいかご存知の方はいらっしゃいませんか? この件に関するリンク、ヒント、チュートリアルなどがあれば、ぜひ教えてください。

答え1

念のため確認しますが、 でログ記録が に設定されていますかerror_reporting = E_ALL?display_errors = On通常php.ini、IIS 7 でこれらのエラーを表示するにはこれで十分です。

次に、IIS 設定を確認します。エラー メッセージがローカルでのみ表示されるように設定されている可能性があります。IIS 7 構成エディターでは、これは system.webServer->httpErrors の下にあります。errorMode を DetailedLocalOnly から Detailed に変更する必要があります。明らかに、これにより、サイトを閲覧しているすべてのユーザーがエラーを見ることができるようになります。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

あるいは、ローカルに保存したい場合は、リモート デスクトップを使用してサーバーにログインし、そこからアプリを実行することもできます (可能であれば)。

答え2

追加したいのは、「existingResponse」を「PassThrough」に設定する必要があるということです。この追加設定を行わないと、実際のエラー メッセージは表示されませんでした。

答え3

これは、IIS マネージャー GUI を使用して簡単に実行できます。サイトを選択し、[エラー ページ] をダブルクリックします。次に、[機能設定の編集...] をクリックして、既定の [ローカル要求の詳細エラーとリモート要求のカスタム エラー ページ] の代わりに [詳細エラー] オプションを選択します。これで、とても簡単です。

答え4

これらを試してみましたが、うまくいきませんでした。具体的には、「構成エディター」では、「既存の応答」を「自動」のままにする必要がありました。

c:\php\php-cgi-.exeただし、FastCGI を使用する場合は、IIS マネージャー -> 既定の Web サイト -> FastCGI に移動して、「編集」を選択してから、「編集」する必要があることがわかりました。

ReturnGeneric500「標準エラーモード」で、次のように変更する必要があります。ReturnStdErrIn500

PHP.INI または PHP コードの設定で有効にしている場合は、PHP エラーが表示されます。

関連情報