2010-02-03 3 views
4

저는 젠드 (Zend) 웹 서비스를 개발하고 있습니다. 좀 더 구체적으로 말하자면 저는 Adobe Flex와의 interop을 위해 Zend_Amf입니다. 이 문제는 Flex 디버거가 적절한 Amf가 아니면 서버의 실제 응답을 표시하지 않기 때문에 쉽게 PHP 오류를 볼 수 없다는 것입니다. 웹 브라우저에서 Zend_Amf 엔드 포인트를 방문하면 오류가 발생하지 않으므로 Amf 핸들러를 실행하는 중 오류가 발생합니다. 지금 나는 오류를보기 위해 방화 광을 사용하여 HTTP 트래픽을 검사하고 있습니다.Zend_Log를 사용하여 PHP 오류를 처리 할 수 ​​있습니까?

내 질문에 : (예 : Zend_Log와 같은) 로그 유틸리티를 사용하여 모든 PHP 오류, 경고 및주의 사항을 HTTP 응답으로 보내거나 (또는 ​​추가로) 파일에 기록 할 수 있습니까?

답변

2

set_error_handler을 사용하면 PHP 오류를 발견하고 Zend_Log를 사용하여 원하는대로 기록 할 수 있습니다.

은 모든 PHP 에러를 잡을 것이다,이 기능을 갖는 유일한 문제는, 그것

타 방법은 register_shutdown_function 함수와 플레이하는 .... 구문 오류 같은 에러를 잡는 것은 불가능하다

이 같은

:

error_reporting(E_ALL); 
    ini_set('display_errors', 0); 

    function shutdown(){ 
     $isError = false; 
     if ($error = error_get_last()){ 
      switch($error['type']){ 
       case E_ERROR: 
       case E_CORE_ERROR: 
       case E_COMPILE_ERROR: 
       case E_USER_ERROR: 
        $isError = true; 
        break; 
      } 
     } 

     if ($isError){ 
      echo "Script execution halted ({$error['message']})"; 
     } else { 
      echo "Script completed"; 
     } 
    } 

    register_shutdown_function('shutdown'); 

그것도 두 가지 방법은 구문 오류처럼, 모든 오류를 잡을 수 없습니다를 결합하여 후주의해야 할 가치가 ....하지만 일반 브라우저를 사용하여 오류의 종류를 볼 수 있었다.

0

내 솔루션이 도움이 될지 확실하지 않습니다. 그러나 예외가 발생하여 응용 프로그램이 종료되고 기본 errorController가 트리거되는 경우 그럼 좀보고 싶을 수도 있습니다 http://blog.elinkmedia.net.au/2009/10/23/application-logging-with-zend_log/

기본적으로 부트 스트랩하는 동안 로거 인스턴스를 등록하고 오류 컨트롤러에 오류를 기록하는 데 사용합니다.

관련 문제