警告とエラーメッセージをphp$variablesに入れたいので、それらをデータベースに保存します。
たとえば、何らかのエラー、警告などがある場合:
Parse error: syntax error, unexpected T_VARIABLE in /example.php(136) on line 9
Warning: [...]
それらを変数$error_codeに入れたい
これはどのように行われますか?
警告とエラーメッセージをphp$variablesに入れたいので、それらをデータベースに保存します。
たとえば、何らかのエラー、警告などがある場合:
Parse error: syntax error, unexpected T_VARIABLE in /example.php(136) on line 9
Warning: [...]
それらを変数$error_codeに入れたい
これはどのように行われますか?
それらをログに記録するだけの単純なケースの場合:
set_error_handler(function($errno, $errstr, $errfile, $errline) use ($db) {
// log in database using $db->query()
});
それらをデータベースに記録するだけでなく(しばらくするとそれらを見なくなる可能性があります)、それらの警告、通知などで例外を生成させることもできます。
function exception_error_handler($errno, $errstr, $errfile, $errline)
{
if (error_reporting()) { // skip errors that were muffled
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
}
set_error_handler("exception_error_handler");
ソース:ErrorException
例外にはより深刻な副作用があるため、例外ハンドラーを配置して、キャッチされない例外がホワイトページの死を引き起こすのを防ぐ必要があります。
スクリプト内のエラーを処理するユーザー関数 (error_handler) を設定します。
この関数は、実行時にエラーを処理する独自の方法を定義するために使用できます。たとえば、重大なエラーが発生したときにデータ/ファイルのクリーンアップを行う必要があるアプリケーションや、特定の条件下でエラーをトリガーする必要がある場合 (トリガー_エラー())。
error_get_last();
より良い解決策が見つかるまで使用します
$lastError = error_get_last();
echo $lastError ? "Error: ".$lastError["message"]." on line ".$lastError["line"] : "";
// Save to db
以前のエラー メッセージを取得する $php_errormsg という変数があります。詳細については、こちらをご覧ください - http://php.net/manual/en/reserved.variables.phperrormsg.php