2013-05-14 9 views
1

이 경고가 해제되었는지 또는 set_error_handler() 함수를 사용하지 않았는지 확인할 수있는 방법이 있습니까? @somethingwrong() 및 somethingwrong()의 코드는 2입니다. 하지만 모든 경고를 기록하고 싶지는 않습니다. 예를 들어 gzuncompress()와 같은 일부 함수는 유효한 입력 데이터를 테스트 할 방법이 없으므로이 방법으로 처리해야합니다.로그인하지 마십시오. PHP 경고

$handler = new errorHandler(); 
error_reporting(0); 
set_error_handler(array($handler, 'handle')); 
set_exception_handler(array($handler, 'exception')); 
register_shutdown_function(array($handler, 'shutdown')); 

class errorHandler 
{ 
public function handle($code, $text, $file, $line) 
{ 
    if (($code & (E_STRICT | E_NOTICE)) == 0) 
     $this->log(...); 
} 

public function exception($exception) 
{ 
    ... 
} 

public function shutdown() 
{ 
    $e = error_get_last(); 
    if ($e !== NULL) 
     $this->log($error); 
} 
} 

// the errors 
include('notexisting.file'); // should be logged 
@gzuncompress('somenonsens'); // should not be logged 
+0

어떤 "이 경고"를 표시하지 않으시겠습니까? error_reporting (0)을 사용하면 오류보고를 비활성화합니다. 아마도 error_reporting (-1) 또는 그와 비슷한 의미일까요? 어떤 코드가 @somethingwrong()에 2입니까? 귀하의 질문을 명확히하십시오. – tomsv

+0

php.net 코드 2에서 볼 수 있듯이 E_PARSE에 대해 E_WARNING 2, E_PARSE 4에 대해 ... 사용 안함이라고 말하면 왜 여전히 모든 오류를 기록합니까? 그러나 오류 표시가 꺼졌습니다. 이제 ini_set ('display_errors', 'Off');라고 썼습니다. error_reporting (-1); 효과는 같습니다. – user2381982

답변

0

시도해 보셨습니까? @ gzuncompress에서 @를 사용하면 정상적인 경고를받지 못하고 오류 처리기를 호출하지 않을 것입니다.

+0

예, 했어요. 그것이 내가 요구 한 이유입니다. 보고에 영향을 미치지 않습니다. 어쩌면 그것은 일부 ini-entries에 의해 제어되는 무언가일까요? – user2381982