2012-09-07 2 views
3

다음 PHP 코드는 "데이터 오류"콘솔에 출력됩니다. 이 문제가 발생하는 이유는 알려진 문제이지만 오류 메시지를 제거하고 싶습니다.PHP 함수에서 중지 오류 메시지 gzuncompress

<?php 
    gzuncompress("foo"); 
?> 

내가 성공하지, PHP에 오류 메시지를 표시하는 방법에 대한 웹 검색하고 다음을 시도했다 :

<?php 
    error_reporting(0); 
    ini_set("display_errors",0); 
    ob_start(); 
    @gzuncompress("foo"); 
    ob_end_clean(); 
?> 

대단히 감사합니다!

+2

무엇을 얻고 있습니까? '@'는'E_WARNING' 레벨 메시지 만 표시하는 것을 방지합니다. –

+0

나는이 문제가 선언되지 않은 함수이거나 gzuncompress와 아무런 관계가 없다고 생각한다. 아마도 대안으로서 누락 된 시스템 라이브러리일까요? – Bryan

+0

콘솔에서 한 줄 "데이터 오류"가 표시됩니다. 이러한 경우 gzuncompress는 null도 반환합니다. –

답변

2

사용자 지정 오류 처리기를 지정했을 가능성이 큽니다.

추론 :

  1. 위한 ob_start() /) (위해서는 ob_end_clean 시간 낭비이다 -이 경고 메시지를 supress하지 않습니다 만 그래서 그 두 드롭 에코 등을 통해 펌핑하고 컨텐츠 윤곽.

  2. error_reporting (0)으로 충분해야합니다. "모든 오류를 끄십시오"라고 말합니다. 오류 로그 또는 화면에 표시되지 않습니다. 그러나 사용자 정의 오류 처리기가 여전히 호출됩니다.

  3. "display_errors"는 화면에 표시되지 않지만 로그 파일에 표시됩니다.

  4. @ 또한 메시지를 보완합니다. 기본적으로 "error_reporting (0)"을 임시 설정합니다. 그러나 cusom 오류 처리기가 여전히 호출됩니다.

그래서 이러한 문제를 해결할 수있는 유일한 방법은 사용자 지정 오류 처리기입니다. @를 사용하여 오류를 억제하거나 error_reporting (0)을 사용하더라도 여전히 호출됩니다. 고객 오류 처리기 자체는 error_reporting()을 호출해야하며 "0"이 오류를 생성하지 않아야하는지 확인해야합니다. 그것은 아마도 자신의 "버퍼를 유지하고 내 메시지를 뱉어 버퍼를 복원"하는 코드가되어 ob_start()를 둘러싼 것입니다.

내가 생각할 수있는 것 : 콘솔과 웹 브라우저/아파치 모두를 통해 위 코드를 실행했는데 깨끗합니다. 원하는대로 경고가 표시되지 않습니다.

+0

당신 말이 맞을 것 같습니다. 나는 HipHop PHP를 사용하여 PHP를 실행 중이며, PHP와 관련이있을 수 있습니다. 위 코드는 여러분에게 오류를주지 않습니다. 감사! –