Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP error_reporting() 함수 완벽 가이드 – 오류 보고 수준 설정 방법

PHP의 error_reporting() 함수는 스크립트 실행 중 어떤 오류를 보고할지 지정하는 함수입니다. 이 함수는 런타임에 error_reporting 디렉티브를 설정하며, PHP에는 다양한 수준의 오류가 존재하기 때문에 이 함수를 사용하면 스크립트가 실행되는 동안 적용될 오류 보고 수준을 결정할 수 있습니다.

또한 error_reporting() 함수는 이전에 설정된 오류 보고 수준을 반환하며, 만약 level 매개변수가 전달되지 않으면 현재 설정된 오류 보고 수준을 그대로 반환합니다.

문법(Syntax)

error_reporting(level)

매개변수(Parameters)

  • level − 현재 스크립트에서 적용할 오류 보고 수준을 지정합니다. 숫자 값 또는 상수 이름 모두 사용할 수 있습니다.

반환 값(Return)

error_reporting() 함수는 이전에 설정된 오류 보고 수준을 반환합니다. 만약 level 매개변수가 전달되지 않은 경우에는 현재 설정된 오류 보고 수준을 반환합니다.

오류 보고 수준(Report Levels)

PHP에서 사용할 수 있는 주요 오류 보고 수준은 아래 표와 같습니다.

상수설명
1E_ERROR치명적인 런타임 오류입니다. 복구할 수 없는 오류로, 스크립트의 실행이 중단됩니다.
2E_WARNING치명적이지 않은 런타임 오류입니다. 스크립트의 실행은 중단되지 않습니다.
4E_PARSE컴파일 시점의 파싱(parse) 오류입니다. 파싱 오류는 파서(parser)에 의해서만 생성됩니다.
8E_NOTICE런타임 알림(notice)입니다. 스크립트가 오류일 가능성이 있는 것을 발견했지만, 정상적인 실행 중에도 발생할 수 있는 경우입니다.
16E_CORE_ERRORPHP 시작 시점에 발생하는 치명적인 오류입니다. PHP 코어에서 발생하는 E_ERROR와 유사합니다.
32E_CORE_WARNINGPHP 시작 시점에 발생하는 치명적이지 않은 오류입니다. PHP 코어에서 발생하는 E_WARNING과 유사합니다.
64E_COMPILE_ERROR컴파일 시점의 치명적인 오류입니다. Zend 스크립팅 엔진이 생성하는 E_ERROR와 유사합니다.
128E_COMPILE_WARNING컴파일 시점의 치명적이지 않은 오류입니다. Zend 스크립팅 엔진이 생성하는 E_WARNING과 유사합니다.
256E_USER_ERROR사용자가 생성한 치명적인 오류입니다. 프로그래머가 PHP 함수 trigger_error()를 사용하여 설정한 E_ERROR와 유사합니다.
512E_USER_WARNING사용자가 생성한 치명적이지 않은 경고입니다. 프로그래머가 trigger_error() 함수를 사용하여 설정한 E_WARNING과 유사합니다.
1024E_USER_NOTICE사용자가 생성한 알림(notice)입니다. 프로그래머가 trigger_error() 함수를 사용하여 설정한 E_NOTICE와 유사합니다.
2048E_STRICT런타임 알림입니다. 코드의 상호 운용성과 호환성을 높일 수 있도록 PHP가 코드 변경을 제안하는 경우입니다.
4096E_RECOVERABLE_ERROR캐치(catch) 가능한 치명적인 오류입니다. E_ERROR와 유사하지만, 사용자가 정의한 핸들러로 처리할 수 있습니다 (set_error_handler() 참고).
8191E_ALLE_STRICT 수준을 제외한 모든 오류와 경고를 포함합니다.

예제(Example)

다음은 error_reporting() 함수의 기본적인 사용 예제입니다.

<?php
   // 오류 보고 끄기
   error_reporting(0);

   // 런타임 오류 보고하기
   error_reporting(E_ERROR | E_WARNING | E_PARSE);
?>

위 예제에서 error_reporting(0)은 모든 오류 보고를 비활성화하고, error_reporting(E_ERROR | E_WARNING | E_PARSE)는 비트 연산자(|)를 사용하여 여러 오류 수준을 동시에 지정하는 방법을 보여줍니다.

모든 오류 보고하기

개발 단계에서는 모든 오류를 확인하는 것이 좋습니다. 아래 예제처럼 E_ALL 상수를 사용하면 모든 오류와 경고를 보고할 수 있습니다.

<?php
   error_reporting(E_ALL);
?>

이렇게 설정하면 개발 과정에서 발생하는 거의 모든 오류와 경고를 확인할 수 있어 디버깅에 큰 도움이 됩니다. 반대로 실제 서비스 환경(운영 서버)에서는 화면에 오류를 노출하지 않도록 로그 파일에 기록하는 방식을 권장합니다.