Nasıl tüm php hataları bir e-postaya tek bir sayfada çalıştırmak gönderebilir?

4 Cevap php

Temelde ben vb herhangi bir php erorrs, uyarılar, bir e-posta bana komut dosyası çalıştırıldığında her zaman gönderilmesini istiyorum sitemde tek bir sayfa var.

Düzenleme: Bu php_ini Sayfası değil, bir düzenleme ya da böyle bir şey yerleştirilir kodu olmalıdır.

Düzenleme 2: Bu TÜM hataları yakalamak ve senaryonun sonunda bir e-posta TÜM hataları göndermek gerekiyor

4 Cevap

Eğer posta göndermek için kurulum için bir error handler ve register a shutdown function gerekir. Bir çok basitleştirilmiş örnekte bu gibi görünebilir:

<?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' );

?>

Eğer kodu ile sorunları yakalamak için çalışıyorsanız, o (erişiminiz varsa verilen) sadece web sunucusu hata günlüklerine bakmak için daha verimli olabilir. Eğer özet şeklinde bu istiyorsanız, size her gün (ya da herneyse) postalamak için bir cron işi yazabilirsiniz.

Eğer hata günlüklerine erişim yoksa, o zaman bir hata işleyicisi yazma ve set_error_hander() en iyi bahistir kullanarak. Ben hala hata işleyicisi yerine size e-postayla daha günlük dosyasına yazmak zorunda öneririm. Sitenizin tüm herhangi bir trafik alırsa e-posta kutusuna hiçbir zaman aşırı dolu olacak.

Yapabileceğiniz en iyi bir hata işleyicisi yazmak için muhtemelen, ve set_error_handler ile bu ayarı. Ancak, bu işlemek all olası hataları olmaz.