複数の php アプリケーションがあり、いくつかの php エラーが発生すると、Apache ログ ファイルに記録されます。
スクリプト内で PHP エラーがいつ発生したかを検出する必要があります。そのため、新しい php エラーを検出すると、エラーのメッセージを var に入れるか、データベースに保存することができます。
複数の php アプリケーションがあり、いくつかの php エラーが発生すると、Apache ログ ファイルに記録されます。
スクリプト内で PHP エラーがいつ発生したかを検出する必要があります。そのため、新しい php エラーを検出すると、エラーのメッセージを var に入れるか、データベースに保存することができます。
PHP の出力バッファを使用して、特定のコード ブロック内のすべての出力を変数に格納できます。次に例を示します。
ob_start();
// php code goes here
try{
// Some code
}catch(Exception $e){
echo $e->getMessage();
}
$all_output = ob_get_clean();
// Insert the $all_output string into database or log it into a file
この場合、警告などのすべての出力と、ob_start と ob_get_clean の間でエコーされるものはすべて $all_output 変数に格納されます。それが役立つことを願っています:)
シャットダウンエラーをキャッチし、それを使用してデータベースに挿入できます。
register_shutdown_function('shutdownFunction');
function shutDownFunction() {
$error = error_get_last();
if ($error['type'] == 1) {
//do whatever
}
}
これは本質的に 2 種類のエラーに要約されます。構文/パーサー エラー、およびランタイム/ロジック エラー。
構文/パーサーのエラーについては、おそらく運が悪いでしょう。そのような場合、スクリプト自体は実行できないため、定義上、スクリプトはエラーに応答できません。これに対する最善の防御策は、テスト (できれば自動化) です。できることの 1 つは、エラー ログをファイルではなくデータベースに設定することです。しかし、スクリプト自体はまだエラーに応答できません。
ランタイム/ロジック エラーの場合、ここで例外処理が実行されます。多くのことが考えられますが、全体的な構造は非常に単純です。
try {
// perform some operation
} catch (Exception $e) {
// an error occurred, the details of which are in $e
// meaningfully respond to it
}