에러 처리¶
CodeIgniter를 사용하면 아래에 설명된 함수를 사용하여 애플리케이션에 에러 보고를 구축할 수 있습니다. 또한 에러와 디버깅 메시지를 텍스트 파일로 저장할 수 있는 에러 로깅 클래스가 있습니다.
참고
기본적으로 CodeIgniter는 모든 PHP 에러를 표시합니다. 개발이 완료되면 이 동작을 변경하고 싶을 수 있습니다. 메인 index.php 파일의 상단에 error_reporting() 함수가 있습니다. 에러 보고를 비활성화해도 에러가 있는 경우 로그 파일이 작성되는 것을 막지는 않습니다.
CodeIgniter의 대부분의 시스템과 달리 에러 함수는 애플리케이션 전반에 걸쳐 전역적으로 사용할 수 있는 단순한 절차적 인터페이스입니다. 이 방법은 클래스/함수 범위에 대해 걱정하지 않고 에러 메시지를 트리거할 수 있습니다.
CodeIgniter는 코어의 일부가 exit() 를 호출할 때마다 상태 코드를 반환합니다.
이 종료 상태 코드는 HTTP 상태 코드와 별개이며, 스크립트가 성공적으로 완료되었는지,
그렇지 않다면 어떤 종류의 문제로 인해 중단되었는지 감시하는 다른 프로세스에 알림
역할을 합니다. 이러한 값은 application/config/constants.php 에 정의되어 있습니다.
종료 상태 코드는 CLI 설정에서 가장 유용하지만 적절한 코드를 반환하면 서버 소프트웨어가
스크립트와 애플리케이션의 상태를 추적하는 데 도움이 됩니다.
다음 함수를 사용하여 에러를 생성할 수 있습니다:
- show_error($message, $status_code, $heading = 'An Error Was Encountered')¶
- 매개변수:
$message (
mixed) – 에러 메시지$status_code (
int) – HTTP 응답 상태 코드$heading (
string) – 에러 페이지 제목
- 반환 형식:
void
이 함수는 실행에 적합한 에러 템플릿을 사용하여 제공된 에러 메시지를 표시합니다:
application/views/errors/html/error_general.php
또는:
application/views/errors/cli/error_general.php
선택적
$status_code매개변수는 에러와 함께 전송되어야 할 HTTP 상태 코드를 결정합니다.$status_code가 100보다 작으면 HTTP 상태 코드는 500으로 설정되고, 종료 상태 코드는$status_code + EXIT__AUTO_MIN으로 설정됩니다. 그 값이EXIT__AUTO_MAX보다 크거나$status_code가 100 이상이면 종료 상태 코드는EXIT_ERROR로 설정됩니다. 자세한 내용은 application/config/constants.php 를 확인하세요.
- show_404($page = '', $log_error = TRUE)¶
- 매개변수:
$page (
string) – URI 문자열$log_error (
bool) – 에러를 로그에 기록할지 여부
- 반환 형식:
void
이 함수는 실행에 적합한 에러 템플릿을 사용하여 404 에러 메시지를 표시합니다:
application/views/errors/html/error_404.php
또는:
application/views/errors/cli/error_404.php
함수는 전달된 문자열이 찾을 수 없는 페이지의 파일 경로인 것으로 예상합니다. 종료 상태 코드는
EXIT_UNKNOWN_FILE로 설정됩니다. 컨트롤러를 찾을 수 없는 경우 CodeIgniter가 자동으로 404 메시지를 표시합니다.CodeIgniter는 모든
show_404()호출을 자동으로 로그에 기록합니다. 선택적 두 번째 매개변수를 FALSE로 설정하면 로그 기록을 건너뜁니다.
- log_message($level, $message)¶
- 매개변수:
$level (
string) – 로그 레벨: ‘error’, ‘debug’ 또는 ‘info’$message (
string) – 로그에 기록할 메시지
- 반환 형식:
void
이 함수를 사용하면 로그 파일에 메시지를 작성할 수 있습니다. 첫 번째 매개변수에 세 가지 “레벨” 중 하나를 제공해야 하며, 이는 메시지 유형(debug, error, info)을 나타내고 두 번째 매개변수에 메시지 자체를 넣습니다.
예시:
if ($some_var == '') { log_message('error', 'Some variable did not contain a value.'); } else { log_message('debug', 'Some variable was correctly set'); } log_message('info', 'The purpose of some variable is to provide some value.');
세 가지 메시지 유형이 있습니다:
에러 메시지. PHP 에러나 사용자 에러와 같은 실제 에러입니다.
디버그 메시지. 디버깅에 도움이 되는 메시지입니다. 예를 들어 클래스가 초기화된 경우 이를 디버깅 정보로 기록할 수 있습니다.
정보 메시지. 가장 낮은 우선순위 메시지로, 단순히 일부 프로세스에 대한 정보를 제공합니다.
참고
로그 파일이 실제로 작성되려면 logs/ 디렉터리가 쓰기 가능해야 합니다. 또한 application/config/config.php 에서 로깅의 “임계값”을 설정해야 합니다. 예를 들어 에러 메시지만 기록하고 다른 두 유형은 기록하지 않으려는 경우가 있습니다. 0으로 설정하면 로깅이 비활성화됩니다.