일반적으로 PHP는 치명적인 오류를 직접 출력하며, 개발자가 문제를 쉽게 찾을 수 있도록 오류 소스(파일 주소, 줄 번호) 및 이유 등을 출력합니다. 그러나 때로는 php.ini 설정이나 타사 프레임워크 구성 문제로 인해 이 정보가 출력되지 않을 수 있습니다. 이때 문제를 빠르게 찾는 데 도움이 되도록 관련 매개변수를 직접 설정하고 이러한 오류 메시지를 출력하는 방법을 배워야 합니다.
error_reporting은 php.ini의 PHP 전역 구성 매개변수입니다. 오류 출력 수준을 구성하는 데 사용되며 오류 출력 수준을 설정하는 데 사용할 수 있습니다.
error_reporting(int $level), $level이 0이면 오류 출력이 꺼집니다. 즉, 오류가 출력되지 않습니다.
set_error_handler
php의 기본 오류 처리는 메시지를 출력하는 것입니다. 그러나 때로는 다른 작업을 정의해야 하는 경우도 있으며, 이 경우 오류 처리 기능을 사용자 정의해야 합니다.
php는 자체 오류 처리 기능을 등록하는 데 도움이 되는 내장 함수 set_error_handler를 제공합니다. 함수 프로토타입은 다음과 같습니다:
mixed set_error_handler ( callback $error_handler [, int $error_types = E_ALL | E_STRICT ] )
오류 처리 함수가 등록되더라도 기본 동작은 계속 실행된다는 점에 주목할 가치가 있습니다. 즉, 오류가 발생하면 오류 메시지가 계속 출력되므로 프로그램에서 명시적으로 오류 수준을 0으로 설정한 다음 자체 오류 처리 기능을 등록해야 합니다. 이 접근 방식은 프로덕션 환경에서 특히 중요합니다. 문제가 발생하더라도 민감한 내부 오류 정보가 잠재적으로 악의적인 사용자에게 노출되지 않기 때문입니다. 사용자 정의 오류 처리 함수는 치명적인 오류(예: 컴파일 오류)를 처리할 수 없다는 점을 지적하는 것도 중요합니다.
다음은 사용자 정의 오류 처리 기능을 사용하는 예입니다.
<?php error_reporting(0); function error_handler($error_level, $error_message, $file, $line) { $exit = false; switch ($error_level) { case E_NOTICE: case E_USER_NOTICE: $error_type = 'Notice'; break; case E_WARNING: case E_USER_WARNING: $error_type = 'Warning'; break; case E_ERROR: case E_USER_ERROR: $error_type = 'Fatal Error'; $exit = true; break; default: $error_type = 'Unknown'; $exit = true; break; } printf("%s: %s in %s on line %d\n", $error_type, $error_message, $file, $line); if ($exit) { die(); } } set_error_handler('error_handler');
echo $novar;
echo 3 / 0;
trigger_error('치명적인 오류 트리거', E_USER_ERROR);
new NonExist();
Execute this 스크립트는 다음과 같은 출력을 얻을 수 있습니다.
알림: 정의되지 않은 변수: 40행의 /your/php_demo_file.php에 있는 novar
경고: 41행의 /your/php_demo_file.php에서 0으로 나누기
치명적인 오류: 트리거 /your/php_demo_file.php의 42행에 치명적인 오류
마지막 "new NoExistClass()" 예외가 사용자 정의 오류 처리 함수에 의해 포착되지 않은 것을 볼 수 있습니다.
마지막으로 set_Exception_handler는 웹 애플리케이션에서 최상위 예외 처리를 등록한 다음 균일하게 오류 처리 페이지로 이동할 수 있습니다.
위 내용은 PHP 사용자 정의 오류 처리 사례입니다. 모두에게 도움이 되기를 바랍니다.
관련 추천 :
PHP 커스텀/시스템/클래스 상수 코드 예제에 대한 자세한 설명
PHP 커스텀/시스템/클래스 상수 코드 예제에 대한 자세한 설명
위 내용은 PHP 사용자 정의 오류 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!