PHP로 웹 개발을 하다 보면 여러 파일에 나누어 작성된 코드를 하나의 페이지에서 함께 사용해야 하는 경우가 매우 자주 있습니다. 이때 활용되는 것이 바로 파일 포함(file inclusion) 함수입니다. PHP는 include(), require(), include_once(), require_once() 네 가지 함수를 제공하며, 모두 외부 파일을 현재 페이지에 불러오는 동일한 목적을 가지지만 오류 처리 방식과 중복 포함 여부에서 중요한 차이가 있습니다.
include() 함수
include() 함수는 지정한 파일을 PHP 페이지에 포함할 때 사용합니다. 만약 지정된 경로에서 파일을 찾지 못하면 경고(Warning) 메시지를 출력하지만, 스크립트 실행은 계속 진행됩니다. 따라서 파일이 없어도 페이지 전체가 멈추면 안 되는 상황, 예를 들어 배너나 부가적인 콘텐츠를 불러올 때 적합합니다.
require() 함수
require() 함수 역시 파일을 페이지에 추가하는 기능을 수행하지만, 오류 처리 방식이 다릅니다. 지정한 파일을 찾지 못하면 치명적인 오류(Fatal Error)를 발생시키며 스크립트 실행을 즉시 중단합니다. 데이터베이스 연결 설정이나 핵심 라이브러리처럼 반드시 존재해야 하는 필수 파일을 포함할 때 사용하는 것이 좋습니다.
include_once() 함수
include_once() 함수는 파일을 단 한 번만 포함한다는 점이 특징입니다. 이미 해당 파일의 코드가 포함되어 있다면 같은 파일을 다시 포함하지 않으므로, 함수 재선언이나 변수 중복 할당으로 인한 오류를 예방할 수 있습니다. 파일을 찾지 못하면 경고 메시지를 출력하지만 실행은 계속됩니다.
require_once() 함수
require_once() 함수는 include_once()와 마찬가지로 파일을 한 번만 포함하지만, 파일을 찾지 못했을 경우 치명적인 오류를 발생시키며 실행을 중단합니다. 클래스 정의 파일이나 환경설정 파일처럼 중복 포함도 허용되지 않고, 누락되어서도 안 되는 파일에 가장 적합한 선택입니다.
네 가지 함수 비교 요약
| 함수 | 파일 미발견 시 동작 | 중복 포함 방지 |
|---|---|---|
| include() | 경고(Warning) 출력 후 실행 계속 | 없음 |
| require() | 치명적 오류(Fatal Error) 후 실행 중단 | 없음 |
| include_once() | 경고(Warning) 출력 후 실행 계속 | 있음 |
| require_once() | 치명적 오류(Fatal Error) 후 실행 중단 | 있음 |
지금까지 PHP의 대표적인 파일 포함 함수인 include(), require(), include_once(), require_once()의 동작 방식과 차이점을 살펴보았습니다. 각 함수의 오류 처리 특성을 정확히 이해하고 상황에 맞게 사용하면 더욱 안정적이고 유지보수하기 쉬운 코드를 작성할 수 있습니다.