2009-08-08 2 views
167

엄격한 표준에 대한 오류보고를 사용하지 않으려면 맨 위에 PHP 스크립트를 설치해야합니다.PHP 5 엄격한 표준 오류 사용 안 함

아무도 도와 줄 수 있습니까?

+8

@ 451F : 여기서 핵심 단어는 "엄격한 표준"이라고 생각합니다. 이전 버전에 대해서는 모르지만 PHP 5.4.0을 사용하면 제작시 오류보고를 'E_ALL & E_DEPRECATED & ~ E_STRICT'로 설정하는 것이 좋습니다. 엄격한 표준을 사용하지 말 것을 제안합니다. –

+0

또한 php.ini 파일을 찾아서/usr/local/php5/lib/ – yadhu

답변

177

당신이 오류를 해제 하시겠습니까 사용 보고하거나 사용자가보고하지 못하도록 막으십시오. 일반적으로 프로덕션 사이트에서도 오류를 기록하는 것이 좋습니다.

# in your PHP code: 
ini_set('display_errors', '0');  # don't show any errors... 
error_reporting(E_ALL | E_STRICT); # ...but do log them 

그들은 당신의 표준 시스템 로그에 기록하거나 오류가 가고 싶은 곳을 정확하게 지정 error_log 지시어를 사용한다.

+9

명시 적으로 명백한 것을 명시하기 위해서 : 물론 php.ini 파일에서도 설정할 수 있습니다. PHP 코드를 수정할 수없는 경우. – sschuberth

+1

생산 과정에서 엄격한 오류를 로깅하는 것도 좋지 않은 방법입니다. 로그에 로그를 채우면 다음 문제 중 하나 또는 둘 모두가 발생하여 중요하지 않을 수 있습니다. serverAdmin은 오류를 놓치거나 무시하고 로그 디렉토리는 어느 시점에서 모든 서버 공간을 사용합니다. – Lance

+4

이것은 나를 위해 작동하지 않습니다 - 가짜 코드에서 E_ALL & ~ E_STRICT을 사용했습니다. 대답 아래의 답변에서 – besimple

87

오류가 없습니다. 당신이 다시 모든 오류를 표시하려는 경우

error_reporting(0);

하거나 엄격하지

error_reporting(E_ALL^E_STRICT);

과,

error_reporting(-1);

+0

에 복사 할 수 없습니다. –

+50

+1 :'^'는 한 가지 유형의 오류를 생략하기에 적합합니다. 추가 유형을 끄려면'E_ALL & ~ E_DEPRECATED & ~ E_STRICT' 형식을 사용해야합니다. 아니면'(E_ALL & ~ (E_DEPRECATED | E_STRICT)) '형식 일 수도 있습니다. –

+10

참고 : E_STRICT는 PHP 5.4 이후로 E_ALL의 일부였습니다. –

9

플래그를 error_reporting를의 디폴트 값은 php.ini 파일에 설정되어 있지 않은 경우 E_ALL & ~ E_NOTICE입니다. 그러나 일부 설치 (특히 개발 환경을 대상으로하는 설치)에서는 이 있습니다. E_ALL | E_STRICT의 값이 이 플래그 (이 값은 일 때 권장 값입니다). 경우에 따라 특별히 PHP 5.3 시대 이전에 개발되었고 PHP 5.3에 정의 된 베스트 프랙티스로 업데이트되지 않은 일부 오픈 소스 프로젝트를 실행하려는 경우에는 개발 환경에서 당신이 좋아하는 메시지. 이러한 상황에 대처하는 최선의 방법은, 플래그 error_reporting를 의 값으로 만 E_ALL을 설정하는 하나의 php.ini 또는 아마의 index.php 같은 프런트 컨트롤러에 코드 (투입 웹 루트는 다음과 같습니다..

if(defined('E_STRICT')){ 
    error_reporting(E_ALL); 
} 
29

우리가 정상적인 PHP 응용 프로그램에 대해 얘기 할 때 위의 모든 솔루션은, 정확하지만, 그들이 그것을 필요로이 문제를 해결하기위한 방법이며, 모든 페이지에 포함에이 루트 폴더에 .htaccess을 입력하십시오. 오류를 숨기기 만하면됩니다. [파일에 다음 행 중 하나 넣기]

php_flag display_errors off 

또는

php_value display_errors 0 

다음으로,이 값 30719이 온 방법 E_ALL (32767), E_STRICT (2048)를 궁금해하는 경우

php_value error_reporting 30719 

오류보고를 설정하는 사실입니다 상수는 숫자 값을 포함하고 (32767 - 2048 = 30719)

+2

고마워요. 이것은 PHP 5.4.7에서 트릭 (.htaccess 솔루션)을 한 것입니다.ini는 트릭을하고있었습니다. – scottcarmich

+1

그것은 -2048이어야합니다, 맞습니까? -2028도 아니야. – Seza

+0

이 작업을 위해 (php_admin_value error_reporting) vhost 설정에서 사용했습니다. –

7

PHP에서.INI 설정 :

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT 
4

워드 프레스

당신은 워드 프레스 환경에서 작업하는 경우는, 워드 프레스 파일의 오류 수준 설정 WP을-포함 기능 wp_debug_mode()에서/load.php을. 따라서이 함수가 호출 된 이후의 레벨을 변경해야합니다 (개발 전용이므로 git으로 검사되지 않은 파일에서) error_reporting() 호출을 직접 수정하십시오.

+0

이것은 정말 유용합니다. 하나의 Wordpress를 설치하기 위해 디버그 모드를 가지고 있었고, 이것이 실현되지 않았다는 것을 깨달았습니다. 정보 주셔서 감사합니다! – Tim

1

깨끗하고 적합한 답변을 찾지 못했습니다. 제작 준비가 완료된 소프트웨어이므로 다음과 같이 진행합니다.

/* 
* Get current error_reporting value, 
* so that we don't lose preferences set in php.ini and .htaccess 
* and accidently reenable message types disabled in those. 
* 
* If you want to disable e.g. E_STRICT on a global level, 
* use php.ini (or .htaccess for folder-level) 
*/ 
$old_error_reporting = error_reporting(); 

/* 
* Disable E_STRICT on top of current error_reporting. 
* 
* Note: do NOT use^for disabling error message types, 
* as^will re-ENABLE the message type if it happens to be disabled already! 
*/ 
error_reporting($old_error_reporting & ~E_STRICT); 


// code that should not emit E_STRICT messages goes here 


/* 
* Optional, depending on if/what code comes after. 
* Restore old settings. 
*/ 
error_reporting($old_error_reporting);