サイトで内部サーバー エラーが発生したときに情報を収集しようとしています。適切なエラー ログが設定されていない多くのアプリケーションがあり、問題が発生した場合、クライアントは作業に最適な情報を提供してくれません。私がやりたいことは、500 が発生したときに、次のような問題が発生した場所に関するデータを収集したいということです。
- ユーザーがいたページ
- ページに関連付けられたデータ ($_GET、$_POST など)
サーバー (IIS 7) に次の構成でカスタム エラー ページを設定しました。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="500" />
<error statusCode="500" path="/error.php?code=500" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
そして、そのページで、$_POST と $_GET を var_dump-ing して、それらの何かがエラー ページに到達するかどうかを確認していますが、そうではありません。500エラーに対する私の目標は次のとおりです。
- エラー発生時のページ/ユーザーに関するデータを収集する
- 収集したデータを含む問題についてサポート チームにメールを送信する
そのデータを収集してカスタム エラー ページに表示させる方法はありますか?
エラー.php:
switch($ErrorCode){
case '500':
var_dump($_REQUEST, $_POST, $_GET);
echo "internal server error";
break;
}
このエラーを取得するためにフォームを送信したにもかかわらず、すべての場合で $_POST は空であり、$_GET にはこれが含まれています (これは理にかなっています)。
array(2) {
["code"]=>
string(3) "500"
["500;http://icom-sbs/test_php"]=>
string(0) ""
}
4/19更新
私はいくつかのアイデアを試しましたが、主なアイデアはセッション変数に有用なデータを保存することでした。エラーが発生するテスト ページのセッション変数にいくつかのフォーム データを保存しようとしましたが、セッションに入ることはありません。サーバーはページでエラーが発生することを検出したように見えるため、ページでコードを実行することさえなく、すぐにエラーページを実行します。