백엔드 · 구성요소 · 검증됨

PHP

서버에서 요청을 입력으로 받아 스크립트를 실행하고 HTML 등의 응답을 출력하는 서버 측 실행 환경으로, 동작 한계와 오류 처리 방식은 php.ini 지시자로 정해집니다.

핵심 답변

PHP는 서버에서 스크립트를 실행해 웹 응답을 생성하는 언어와 런타임입니다. 실행 시 메모리·오류 보고 같은 동작은 php.ini의 설정 지시자로 정해지므로, PHP 관련 장애는 코드와 실행 설정을 함께 확인해야 합니다.

상세 설명

PHP는 웹 서버에서 요청을 입력으로 받아 스크립트를 실행하고 HTML 같은 응답을 출력하는 서버 측 실행 환경입니다. 같은 코드라도 실행 환경의 설정에 따라 허용 자원과 오류 처리 방식이 달라지므로, PHP 관련 장애는 애플리케이션 코드와 실행 설정을 함께 봐야 합니다.

PHP의 실행 동작은 코드만으로 정해지지 않고 php.ini의 설정 지시자와 함께 결정됩니다.

실행 동작을 정하는 핵심 설정

php.ini의 코어 지시자는 스크립트가 사용할 수 있는 자원과 입력 처리 한계를 정합니다. 아래 값은 출처에 명시된 기본값이며, 운영·개발용 php.ini나 서버 설정에서 달라질 수 있습니다. [Observation]

지시자역할문서상 기본값
memory_limit스크립트 하나가 할당할 수 있는 최대 메모리(바이트). -1이면 제한 없음128M
post_max_sizePOST 데이터의 최대 크기8M
upload_max_filesize업로드 파일 하나의 최대 크기2M
max_file_uploads동시 업로드 파일 최대 개수20

memory_limit은 잘못 작성된 스크립트가 서버의 가용 메모리를 모두 소진하는 것을 막는 상한으로 설명됩니다. 상한을 넘어서는 할당은 실행 중단으로 이어질 수 있습니다.

오류 수준과 실행 중단

PHP는 오류를 수준(level) 상수로 구분하며, 어떤 수준을 보고할지는 비트마스크로 지정합니다. 실행 중단 여부는 수준에 따라 다릅니다.

  • E_ERROR: 복구할 수 없는 치명적 런타임 오류(예: 메모리 할당 문제)로, 스크립트 실행이 중단됩니다.
  • E_PARSE: 컴파일 시점의 구문 오류로, 파서가 생성합니다.
  • E_WARNING, E_NOTICE: 비치명적 경고·알림으로, 실행은 중단되지 않습니다.
  • E_ALL: 모든 오류·경고·알림을 포함하는 비트마스크입니다.

즉 화면이 비거나 응답이 끊기는 장애는 E_ERROR처럼 실행을 중단시키는 오류일 가능성이 있고, 로그에만 남는 경고와는 구분해야 합니다. [Hypothesis]

확인이 필요한 이유

  • 같은 코드가 한 환경에서만 실패한다면 코드가 아니라 php.ini 설정 차이일 수 있습니다. 코드와 실행 설정을 함께 확인합니다.
  • 오류 표시(display_errors)와 오류 기록(log_errors) 설정에 따라 같은 오류라도 화면에 보이거나 로그에만 남을 수 있으므로, 화면에 오류가 없다고 오류가 없는 것으로 단정하지 않습니다. [Hypothesis]

++설정 값을 변경할 때는 기존 값을 먼저 기록해 두고, 변경 후 같은 요청을 다시 실행해 동작 변화를 확인합니다. memory_limit-1(무제한)로 두면 문제 스크립트가 서버 메모리를 소진할 수 있으므로, 원인 확인 전 무제한 설정은 피합니다.++