register_shutdown_function() 함수와 error_get_last() 함수를 사용하는 방법 > php

본문 바로가기
사이트 내 전체검색

php

register_shutdown_function() 함수와 error_get_last() 함수를 사용하는 방법

페이지 정보

작성자 서방님 댓글 0건 조회 591회 작성일 13-04-04 16:30

본문

<?php

define
('E_FATAL',  E_ERROR | E_USER_ERROR | E_PARSE | E_CORE_ERROR |
        E_COMPILE_ERROR
| E_RECOVERABLE_ERROR);

define
('ENV', 'dev');

//Custom error handling vars
define
('DISPLAY_ERRORS', TRUE);
define
('ERROR_REPORTING', E_ALL | E_STRICT);
define
('LOG_ERRORS', TRUE);

register_shutdown_function
('shut');

set_error_handler
('handler');

//Function to catch no user error handler function errors...
function shut(){

    $error
= error_get_last();

   
if($error && ($error['type'] & E_FATAL)){
        handler
($error['type'], $error['message'], $error['file'], $error['line']);
   
}

}

function handler( $errno, $errstr, $errfile, $errline ) {

   
switch ($errno){

       
case E_ERROR: // 1 //
            $typestr
= 'E_ERROR'; break;
       
case E_WARNING: // 2 //
            $typestr
= 'E_WARNING'; break;
       
case E_PARSE: // 4 //
            $typestr
= 'E_PARSE'; break;
       
case E_NOTICE: // 8 //
            $typestr
= 'E_NOTICE'; break;
       
case E_CORE_ERROR: // 16 //
            $typestr
= 'E_CORE_ERROR'; break;
       
case E_CORE_WARNING: // 32 //
            $typestr
= 'E_CORE_WARNING'; break;
       
case E_COMPILE_ERROR: // 64 //
            $typestr
= 'E_COMPILE_ERROR'; break;
       
case E_CORE_WARNING: // 128 //
            $typestr
= 'E_COMPILE_WARNING'; break;
       
case E_USER_ERROR: // 256 //
            $typestr
= 'E_USER_ERROR'; break;
       
case E_USER_WARNING: // 512 //
            $typestr
= 'E_USER_WARNING'; break;
       
case E_USER_NOTICE: // 1024 //
            $typestr
= 'E_USER_NOTICE'; break;
       
case E_STRICT: // 2048 //
            $typestr
= 'E_STRICT'; break;
       
case E_RECOVERABLE_ERROR: // 4096 //
            $typestr
= 'E_RECOVERABLE_ERROR'; break;
       
case E_DEPRECATED: // 8192 //
            $typestr
= 'E_DEPRECATED'; break;
       
case E_USER_DEPRECATED: // 16384 //
            $typestr
= 'E_USER_DEPRECATED'; break;

   
}

    $message
= '<b>'.$typestr.': </b>'.$errstr.' in <b>'.$errfile.'</b> on line <b>'.$errline.'</b><br/>';

   
if(($errno & E_FATAL) && ENV === 'production'){

        header
('Location: 500.html');
        header
('Status: 500 Internal Server Error');

   
}

   
if(!($errno & ERROR_REPORTING))
       
return;

   
if(DISPLAY_ERRORS)
        printf
('%s', $message);

   
//Logging error on php file error log...
   
if(LOG_ERRORS)
        error_log
(strip_tags($message), 0);

}

ob_start
();

@include 'content.php';

ob_end_flush
();

?>

댓글목록

등록된 댓글이 없습니다.

Total 614건 28 페이지
게시물 검색

회원로그인

접속자집계

오늘
597
어제
542
최대
3,383
전체
321,998
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.