PHP의 error_reporting() 함수는 스크립트 실행 중 어떤 오류를 보고할지 지정하는 함수입니다. 이 함수는 런타임에 error_reporting 디렉티브를 설정하며, PHP에는 다양한 수준의 오류가 존재하기 때문에 이 함수를 사용하면 스크립트가 실행되는 동안 적용될 오류 보고 수준을 결정할 수 있습니다.
또한 error_reporting() 함수는 이전에 설정된 오류 보고 수준을 반환하며, 만약 level 매개변수가 전달되지 않으면 현재 설정된 오류 보고 수준을 그대로 반환합니다.
문법(Syntax)
error_reporting(level)
매개변수(Parameters)
level − 현재 스크립트에서 적용할 오류 보고 수준을 지정합니다. 숫자 값 또는 상수 이름 모두 사용할 수 있습니다.
반환 값(Return)
error_reporting() 함수는 이전에 설정된 오류 보고 수준을 반환합니다. 만약 level 매개변수가 전달되지 않은 경우에는 현재 설정된 오류 보고 수준을 반환합니다.
오류 보고 수준(Report Levels)
PHP에서 사용할 수 있는 주요 오류 보고 수준은 아래 표와 같습니다.
| 값 | 상수 | 설명 |
|---|---|---|
| 1 | E_ERROR | 치명적인 런타임 오류입니다. 복구할 수 없는 오류로, 스크립트의 실행이 중단됩니다. |
| 2 | E_WARNING | 치명적이지 않은 런타임 오류입니다. 스크립트의 실행은 중단되지 않습니다. |
| 4 | E_PARSE | 컴파일 시점의 파싱(parse) 오류입니다. 파싱 오류는 파서(parser)에 의해서만 생성됩니다. |
| 8 | E_NOTICE | 런타임 알림(notice)입니다. 스크립트가 오류일 가능성이 있는 것을 발견했지만, 정상적인 실행 중에도 발생할 수 있는 경우입니다. |
| 16 | E_CORE_ERROR | PHP 시작 시점에 발생하는 치명적인 오류입니다. PHP 코어에서 발생하는 E_ERROR와 유사합니다. |
| 32 | E_CORE_WARNING | PHP 시작 시점에 발생하는 치명적이지 않은 오류입니다. PHP 코어에서 발생하는 E_WARNING과 유사합니다. |
| 64 | E_COMPILE_ERROR | 컴파일 시점의 치명적인 오류입니다. Zend 스크립팅 엔진이 생성하는 E_ERROR와 유사합니다. |
| 128 | E_COMPILE_WARNING | 컴파일 시점의 치명적이지 않은 오류입니다. Zend 스크립팅 엔진이 생성하는 E_WARNING과 유사합니다. |
| 256 | E_USER_ERROR | 사용자가 생성한 치명적인 오류입니다. 프로그래머가 PHP 함수 trigger_error()를 사용하여 설정한 E_ERROR와 유사합니다. |
| 512 | E_USER_WARNING | 사용자가 생성한 치명적이지 않은 경고입니다. 프로그래머가 trigger_error() 함수를 사용하여 설정한 E_WARNING과 유사합니다. |
| 1024 | E_USER_NOTICE | 사용자가 생성한 알림(notice)입니다. 프로그래머가 trigger_error() 함수를 사용하여 설정한 E_NOTICE와 유사합니다. |
| 2048 | E_STRICT | 런타임 알림입니다. 코드의 상호 운용성과 호환성을 높일 수 있도록 PHP가 코드 변경을 제안하는 경우입니다. |
| 4096 | E_RECOVERABLE_ERROR | 캐치(catch) 가능한 치명적인 오류입니다. E_ERROR와 유사하지만, 사용자가 정의한 핸들러로 처리할 수 있습니다 (set_error_handler() 참고). |
| 8191 | E_ALL | E_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); ?>
이렇게 설정하면 개발 과정에서 발생하는 거의 모든 오류와 경고를 확인할 수 있어 디버깅에 큰 도움이 됩니다. 반대로 실제 서비스 환경(운영 서버)에서는 화면에 오류를 노출하지 않도록 로그 파일에 기록하는 방식을 권장합니다.