답변:
오류보고를 비활성화 하시겠습니까, 아니면 사용자가 보지 못하게 하시겠습니까? 일반적으로 프로덕션 사이트에서도 오류를 기록하는 것이 좋습니다.
# 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
지시문을 사용하여 오류가 발생하는 위치를 정확하게 지정합니다.
php.ini
PHP 코드를 수정할 수없는 경우 파일 에서도 설정할 수 있습니다.
php.ini
또는 .htaccess
내 PHP 코드 어딘가에 나.
오류가 없습니다.
error_reporting(0);
또는 엄격하지 않은
error_reporting(E_ALL ^ E_STRICT);
모든 오류를 다시 표시하려면
error_reporting(-1);
^
한 가지 유형의 오류를 생략하는 데만 도움이 된다고 생각합니다 . 추가 유형을 끄려면 형식을 사용해야 E_ALL & ~E_DEPRECATED & ~E_STRICT
합니다. 아니면 (E_ALL & ~(E_DEPRECATED | E_STRICT))
형식 일 수도 있습니다.
ini_set('error_reporting', E_ALL&~E_STRICT);
보고 억제 <5.4 PHP에서 STRICT 오류 보고 억제> = 5.4ini_set('error_reporting', E_ALL^E_STRICT);
^
보다는 ( "xor") 를 사용 & ~
하는 것은 나쁜 생각 임을 지적하고 싶다 ! 예를 들어 E_STRICT는 E_ALL의 일부이며 항상 그 일부가 될 것이라는 가정^
에 따라 다릅니다 . E_ALL이 과거에 변경 되었기 때문에 이것은 나쁘다 (E_STRICT는 과거가 아니었지만 현재는 PHP 5.4 이후이다). 가정이 언젠가 실패하면 깨질뿐만 아니라 실제로 해야하는 것과 반대 되는 행동 을합니다. XOR ( )의 작동 방식으로 인해 E_STRICT 가 활성화 됩니다 . 그러나 현재 E_ALL 값에 관계없이 항상 E_STRICT를 비활성화합니다. 따라서 사용해야합니다. ^
^
& ~
& ~
위의 모든 솔루션이 정확합니다. 그러나 일반적인 PHP 응용 프로그램에 대해 이야기 할 때 필요한 모든 페이지에 포함시켜야합니다. 이 문제를 해결하는 방법 .htaccess
은 루트 폴더를 통하는 것 입니다. 오류를 숨기려면 [파일에 다음 줄 중 하나를 입력하십시오]
php_flag display_errors off
또는
php_value display_errors 0
다음으로 오류보고를 설정하려면
php_value error_reporting 30719
값 30719
이 어떻게되는지 궁금하다면 E_ALL (32767), E_STRICT (2048)는 실제로는 숫자 값을 보유하는 상수이며 ( 32767 - 2048 = 30719
)
php_admin_value error_reporting
이것을 vhost 설정에서 작동 시키기 위해 사용 했다.
error_reporting 플래그 의 기본값 은 php.ini에 설정되어 있지 않은 경우 E_ALL & ~ E_NOTICE 입니다. 그러나 일부 설치 (특히 개발 환경을 대상으로하는 설치)에는 E_ALL | E_STRICT 가이 플래그의 값으로 설정되었습니다 ( 개발 중에 권장되는 값입니다 ). 경우에 따라, 특히 개발 환경에서 PHP 5.3 이전에 개발되었지만 PHP 5.3에서 정의한 모범 사례로 아직 업데이트되지 않은 일부 오픈 소스 프로젝트를 실행하려는 경우 일부 당신 같은 메시지. 이 상황에 대처하는 가장 좋은 방법은 E_ALL 만 error_reporting 플래그 의 값으로 설정 하는 것입니다.php.ini 또는 코드 (아마도 웹 루트의 index.php와 같은 프론트 컨트롤러에서 다음과 같이)
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
프로덕션 용 소프트웨어에 깨끗하고 적합한 답변을 찾지 못했습니다.
/*
* 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);
E_ALL & ~E_DEPRECATED & ~E_STRICT
프로덕션 용으로 오류보고를 설정하는 것이 좋습니다 . 엄격한 표준을 사용하지 말 것을 제안합니다.