1 ページで実行されたすべての PHP エラーを電子メールに送信するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1702693

  •  19-09-2019
  •  | 
  •  

質問

基本的に、サイトに 1 つのページがあり、スクリプトが実行されるたびに PHP エラーや警告などを電子メールで送信したいと考えています。

編集:これはページに配置されるコードである必要があり、php_ini などの編集ではありません。

編集2:これは、すべてのエラーをキャッチし、スクリプトの最後に 1 つの電子メールですべてのエラーを送信する必要があります。

役に立ちましたか?

解決

をセットアップする必要があります エラーハンドラ そして シャットダウン機能を登録する 郵送をするために。非常に単純化しすぎた例では、次のようになります。

<?php

$__errors = array();
function my_error_handler($code, $message, $file, $line) {
    global $__errors;
    $__errors[] = sprintf('"%s" (%s line %s)', $message, $file, $line);
}
set_error_handler( 'my_error_handler', E_ALL );

function send_error_log() {
    global $__errors;

    if ( count( $__errors ) > 0 ) {
        foreach ( $__errors as $error ) {
            $body . $error . "\n";
        }
        mail( 'to@example.com', 'error log', $body );
    }
}
register_shutdown_function( 'send_error_log' );

?>

他のヒント

あなたは、コードの問題をキャッチしようとしている場合、ちょうどあなたのウェブサーバのエラーログを見て、より効率的かもしれ(あなたがアクセス権を持っていることを考えると)。あなたがダイジェスト形式でこれらをしたい場合は、毎日(または何でも)あなたを郵送するcronジョブを作成することができます。

エラーログへのアクセスを持っていない場合は、

は、エラーハンドラを書いてset_error_hander()を使用すると、あなたの最善の策です。私はまだログファイルにエラーハンドラの書き込みを持つのではなく、あなたを電子メールで送信することをお勧めしたいです。あなたのサイトはすべてのメールボックスですべてのトラフィックを取得する場合は時間がないの過いっぱいになります。

あなたができる最善のは、エラーハンドラを書くことはおそらくあり、かつはset_error_handlerていることを設定します。しかし、これはすべての可能なエラーを処理しません。

あなたは set_error_handler()する

のカスタム関数を作成することができます
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top