0

複数の php アプリケーションがあり、いくつかの php エラーが発生すると、Apache ログ ファイルに記録されます。

スクリプト内で PHP エラーがいつ発生したかを検出する必要があります。そのため、新しい php エラーを検出すると、エラーのメッセージを var に入れるか、データベースに保存することができます。

4

3 に答える 3

2

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 変数に格納されます。それが役立つことを願っています:)

于 2013-10-28T12:51:47.617 に答える
1

シャットダウンエラーをキャッチし、それを使用してデータベースに挿入できます。

register_shutdown_function('shutdownFunction');

function shutDownFunction() { 
    $error = error_get_last();
    if ($error['type'] == 1) {
        //do whatever
    } 
}
于 2013-10-28T12:52:59.823 に答える
0

これは本質的に 2 種類のエラーに要約されます。構文/パーサー エラー、およびランタイム/ロジック エラー。

構文/パーサーのエラーについては、おそらく運が悪いでしょう。そのような場合、スクリプト自体は実行できないため、定義上、スクリプトはエラーに応答できません。これに対する最善の防御策は、テスト (できれば自動化) です。できることの 1 つは、エラー ログをファイルではなくデータベースに設定することです。しかし、スクリプト自体はまだエラーに応答できません。

ランタイム/ロジック エラーの場合、ここで例外処理が実行されます。多くのことが考えられますが、全体的な構造は非常に単純です。

try {
    // perform some operation
} catch (Exception $e) {
    // an error occurred, the details of which are in $e
    // meaningfully respond to it
}
于 2013-10-28T12:51:33.200 に答える