한 페이지에서 실행되는 모든 PHP 오류를 이메일로 보낼 수 있습니까?

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

  •  19-09-2019
  •  | 
  •  

문제

기본적으로 내 사이트에 PHP ERORRS, 경고 등이 스크립트가 실행될 때마다 이메일로 나에게 전송되기를 원하는 단일 페이지가 있습니다.

편집 : 이것은 php_ini 또는 그와 비슷한 것에 대한 편집이 아닌 페이지에 배치 된 코드이어야합니다.

편집 2 : 모든 오류를 포착하고 스크립트 끝에서 한 이메일로 모든 오류를 보내야합니다.

도움이 되었습니까?

해결책

설정해야합니다 오류 핸들러 그리고 종료 기능을 등록하십시오 메일 링을하기 위해. 매우 단순화 된 예에서 다음과 같이 보일 수 있습니다.

<?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