DEV WIKI
백엔드 · 오류·증상

fatal error

최종 검토
2026-07-24
참고 자료
있음
관련 기술

빠른 답변

이 오류는 무엇인가요?
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가 발생합니다.

확인

  1. set_exception_handler()에 등록한 처리기 함수를 확인합니다.
  2. 처리기 매개변수가 Exception으로 타입 선언되어 있는지 확인합니다.
  3. 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