fatal error
빠른 답변
- 이 오류는 무엇인가요?
- PHP 7에서 Exception 타입 선언을 사용한 set_exception_handler() 처리기가 Error 객체를 받으면 fatal error가 발생합니다.
- 가장 흔한 원인은 무엇인가요?
- PHP 7에서 set_exception_handler()에 등록한 처리기의 매개변수를 Exception으로 타입 선언한 경우 Error 객체가 발생하면 fatal error가 발생하므로, PHP 5·7 호환 코드에서는 해당 타입 선언을 제거하고 PHP 7 전용 코드에서는 Throwable로 바꿉니다.
- 무엇을 먼저 확인해야 하나요?
- `set_exception_handler()`에 등록한 처리기의 매개변수가 `Exception`으로 타입 선언되어 있는지 확인합니다.
현재 증상
- PHP 치명적 오류
먼저 확인할 항목
`set_exception_handler()`에 등록한 처리기의 매개변수가 `Exception`으로 타입 선언되어 있는지 확인합니다.
`Error` 객체가 발생할 때 `fatal error`가 발생하는지 확인합니다.
피해야 할 조치
주의
- 변경 전 현재 처리기 선언과 변경 대상을 기록합니다.
- 가능한 경우 변경 전 코드를 백업하거나 내보냅니다.
- 한 번에 한 항목만 변경합니다.
- 장애 또는 오류가 발생하면 기록한 이전 값으로 복구합니다.
환경별 원인과 조치
증상
PHP 7에서 set_exception_handler()에 등록한 예외 처리기의 매개변수가 Exception으로 타입 선언되어 있고 Error 객체가 발생하면 fatal error가 발생합니다.
확인
set_exception_handler()에 등록한 처리기 함수를 확인합니다.- 처리기 매개변수가
Exception으로 타입 선언되어 있는지 확인합니다. Error객체가 발생한 경우fatal error가 발생하는지 확인합니다.
처리기 매개변수에 Exception 타입 선언이 있고 Error 객체가 발생했을 때 fatal error가 발생하면 이 문제에 해당합니다.
복구
PHP 5와 PHP 7을 함께 지원해야 하면 처리기 매개변수의 타입 선언을 제거합니다.
PHP 7 전용 코드이면 처리기 매개변수의 Exception 타입 선언을 Throwable로 바꿉니다.
주의사항
- 변경 전 현재 처리기 선언과 변경 대상을 기록합니다.
- 가능한 경우 변경 전 코드를 백업하거나 내보냅니다.
- 한 번에 한 항목만 변경합니다.
- 장애 또는 오류가 발생하면 기록한 이전 값으로 복구합니다.
참고 자료
PHP · 공식 자료 (새 창에서 열림)
확인 범위: PHP 7에서는 많은 fatal 및 recoverable fatal error가 Error 클래스를 상속하는 예외로 전환되었습니다., set_exception_handler()에 등록한 처리기가 Exception 타입 선언을 사용하면 Error 객체가 발생할 때 fatal error가 발생합니다., PHP 5와 PHP 7을 함께 지원해야 하면 처리기에서 타입 선언을 제거할 수 있습니다., PHP 7 전용 코드에서는 Exception 타입 선언을 Throwable로 바꿀 수 있습니다. · 확인일: 2026-07-24