フロントエンド Web サイトでエラーを処理する最善の方法は何ですか? 素敵な「問題が発生しました」ページがある twitter や reddit などに似ています。したい:
- ログファイルだけであっても、エラーを検出して通知する
- 失敗したクジラなどのカスタム エラー ページを表示して、何も表示しない代わりに明らかに何かが間違っていることを示したり、ひどいエラーを表示したりします。
理想的には、致命的なエラー、カスタム例外、mysql のダウン、ランダムな 500 エラーなど、ユーザーがサイトを見るのを妨げるものはすべて、カスタム エラー ページを表示する必要があります。
致命的なエラー
PHP : カスタム エラー ハンドラ - 解析エラーと致命的エラーの処理 - 正常に動作しますが、これがスクリプトの最後で発生し、既に何かを出力している場合、これは動作しません
致命的でないエラー
http://davidwalsh.name/custom-error-handling-php
MySQL エラー
理想的には、単純なクエリ エラーから、サーバーが存在しないことまで、すべてをカバーする必要があります。データベースクラスでエラーを検出し、エラーメソッドへのリダイレクト/呼び出しを呼び出すのと同じくらい簡単だと想像してください
サーバー エラー
これは、 PHPまたはApacheまたはその両方で行うべきことですか?
現時点でのコード
現在、私は他のさまざまな SO の組み合わせから次のものを持っていますが、ページの残りの部分が読み込まれた後に致命的なエラーが報告されます。
上記のすべてで機能する何かのアイデアはありますか?
<?
function xhandler($number,$string,$file,$line,$context)
{
//log to text file?
//log to xml file?
//store in database?
//whatever you want to do!
echo "<h1>here be dragons!</h1>";
echo "$number,$string,$file,$line,$context";
exit();
}
function fatal_handler() {
$errfile = "unknown file";
$errstr = "shutdown";
$errno = E_CORE_ERROR;
$errline = 0;
$error = error_get_last();
if( $error !== NULL) {
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
}
echo "<h1>here be dragons!</h1>";
print_r($error);
exit();
}
register_shutdown_function( "fatal_handler" );
set_error_handler('xhandler',E_ALL);
include('show_the_content');
function_that_doesnt_exist();
echo $unterminated_line_of_code
?>