DEV WIKI
백엔드 · 기술

PHP

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

적용 범위
PHP의 개념·동작을 확인해야 하는 공개 웹 환경
출처 확인일
2026-07-23
최종 검토
2026-07-23
오류·수정 제보 (새 창에서 열림)

정상 동작 조건

요약

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(무제한)로 두면 문제 스크립트가 서버 메모리를 소진할 수 있으므로, 원인 확인 전 무제한 설정은 피합니다.++

관련 플랫폼

관련 오류·증상

Additionally, the deprecated mcrypt_ecb(),

PHP 공식 원문에 표시된 Additionally, the deprecated mcrypt_ecb(), 항목의 문구를 확인하는 문서입니다.

be considered deprecated.

PHP 공식 원문에 표시된 be considered deprecated. 항목의 문구를 확인하는 문서입니다.

be disabled using this directive.

PHP 공식 원문에 표시된 be disabled using this directive. 항목의 문구를 확인하는 문서입니다.

code. If it is disabled, PHP sends a » RFC 3875

PHP 공식 원문에 표시된 code. If it is disabled, PHP sends a » RFC 3875 항목의 문구를 확인하는 문서입니다.

Deprecated as of PHP 8.5.0

PHP 공식 원문에 표시된 Deprecated as of PHP 8.5.0 항목의 문구를 확인하는 문서입니다.

DEPRECATED as of PHP 8.5.0. Relying on this feature

PHP 공식 원문에 표시된 DEPRECATED as of PHP 8.5.0. Relying on this feature 항목의 문구를 확인하는 문서입니다.

Deprecated Features

PHP 공식 원문에 표시된 Deprecated Features 항목의 문구를 확인하는 문서입니다.

Deprecated features in PHP 7.0.x

PHP 공식 원문에 표시된 Deprecated features in PHP 7.0.x 항목의 문구를 확인하는 문서입니다.

Deprecated features in PHP 7.2.x

PHP 공식 원문에 표시된 Deprecated features in PHP 7.2.x 항목의 문구를 확인하는 문서입니다.

deprecated in PHP 5.3.0, and became effectively non-functional with the

PHP 공식 원문에 표시된 deprecated in PHP 5.3.0, and became effectively non-functional with the 항목의 문구를 확인하는 문서입니다.

Failed to write file to disk.

PHP 공식 원문에 표시된 Failed to write file to disk. 항목의 문구를 확인하는 문서입니다.

feature has been deprecated.

PHP 공식 원문에 표시된 feature has been deprecated. 항목의 문구를 확인하는 문서입니다.

그누보드5 메일 발송 사용이 꺼져 있음

회원 인증 메일과 관리자 메일 테스트가 모두 실패할 때 메일 발송 사용 설정을 확인합니다.

has been deprecated.

PHP 공식 원문에 표시된 has been deprecated. 항목의 문구를 확인하는 문서입니다.

have been deprecated.

PHP 공식 원문에 표시된 have been deprecated. 항목의 문구를 확인하는 문서입니다.

502 Bad Gateway

`502 Bad Gateway`는 프록시 또는 게이트웨이가 업스트림 서버에서 유효하지 않은 응답을 받았을 때 표시됩니다. 오류 화면의 Cloudflare 브랜딩과 같은 시각의 프록시·원본 로그를 구분해 확인합니다.

I get the message 'Warning: Cannot send session cookie - headers already

PHP 공식 원문에 표시된 I get the message 'Warning: Cannot send session cookie - headers already 항목의 문구를 확인하는 문서입니다.

Internal constructors always throw exceptions on failure

PHP 공식 원문에 표시된 Internal constructors always throw exceptions on failure 항목의 문구를 확인하는 문서입니다.

Internal function failure on overflow

PHP 공식 원문에 표시된 Internal function failure on overflow 항목의 문구를 확인하는 문서입니다.

interpolation is deprecated.

PHP 공식 원문에 표시된 interpolation is deprecated. 항목의 문구를 확인하는 문서입니다.

It cannot be set in httpd.conf.

PHP 공식 원문에 표시된 It cannot be set in httpd.conf. 항목의 문구를 확인하는 문서입니다.

list() cannot unpack strings

PHP 공식 원문에 표시된 list() cannot unpack strings 항목의 문구를 확인하는 문서입니다.

Missing a temporary folder.

PHP 공식 원문에 표시된 Missing a temporary folder. 항목의 문구를 확인하는 문서입니다.

No Input file specified

IIS에서 PHP 인증을 사용할 때 `No Input file specified`가 표시되는 문제입니다.

PHP: Deprecated features in PHP 7.2.x - Manual

PHP 공식 원문에 표시된 PHP: Deprecated features in PHP 7.2.x - Manual 항목의 문구를 확인하는 문서입니다.

PHP: Deprecated Features - Manual

PHP 공식 원문에 표시된 PHP: Deprecated Features - Manual 항목의 문구를 확인하는 문서입니다.

Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0

PHP 하드 타임아웃으로 실행이 비정상 종료될 때 표시되는 오류 메시지 식별 방법입니다.

Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2

PHP 7에서 음수 값으로 비트 시프트를 수행할 때 표시되는 ArithmeticError입니다.

PHP Fatal error: Uncaught DivisionByZeroError: Modulo by zero in %s line %d

PHP 7에서 0으로 나눈 나머지 연산은 DivisionByZeroError 예외를 발생시킵니다.

PHP 파일 업로드가 완료되지 않음

PHP 기반 사이트에서 파일 업로드가 완료되지 않을 때 파일 업로드 허용, 임시 디렉터리, 크기와 개수 제한을 구분해 확인하는 문서입니다.

I cannot remember the parameter order of PHP functions, are they random?

PHP 공식 원문에 표시된 I cannot remember the parameter order of PHP functions, are they random? 항목의 문구를 확인하는 문서입니다.

I get the message 'Warning: Cannot send session cookie - headers already sent...' or 'Cannot add header information - headers already sent...'.

PHP 공식 원문에 표시된 I get the message 'Warning: Cannot send session cookie - headers already sent...' or 'Cannot add header information - headers already sent...'. 항목의 문구를 확인하는 문서입니다.

Fatal error: Allowed memory size of N bytes exhausted (tried to allocate N bytes)

PHP 스크립트가 memory_limit로 정해진 허용 메모리 상한을 초과해 실행이 중단될 때 표시되는 치명적 오류입니다.

When I do the following, the output is printed in the wrong order:

PHP 표현식 안에서 호출한 함수가 값을 반환하지 않고 출력해 출력 순서가 예상과 달라지는 문제입니다.

Parse error: syntax error, unexpected 'new' (T_NEW) in /tmp/test.php on line 3

PHP 7에서 `new` 문의 결과를 참조로 대입하면 파서 오류가 발생합니다.

fatal error

PHP 7에서 Exception 타입 선언을 사용한 set_exception_handler() 처리기가 Error 객체를 받으면 fatal error가 발생합니다.

UPLOAD_ERR_INI_SIZE

PHP 공식 문서에서 UPLOAD_ERR_INI_SIZE는 업로드 파일이 php.ini의 upload_max_filesize 지시어를 초과했음을 나타내며 값은 1입니다.

Warning: Cannot send session cookie - headers already sent...

PHP에서 세션 쿠키를 전송하려 할 때 헤더가 이미 전송된 경우 표시되는 경고입니다.

Windows: I can't access files shared on another computer using IIS

PHP 공식 원문에 표시된 Windows: I can't access files shared on another computer using IIS 항목의 문구를 확인하는 문서입니다.

TypeError: count(): Argument #1 ($value) must be of type Countable|array

PHP 8 전환 뒤 count()에 배열이나 Countable이 아닌 값이 전달됐는지 확인합니다.

TypeError: Cannot access offset of type string on string

PHP 8 전환 뒤 문자열 오프셋을 배열 키처럼 사용했는지 확인합니다.

Previously deprecated in PHP 5.6,

PHP 공식 원문에 표시된 Previously deprecated in PHP 5.6, 항목의 문구를 확인하는 문서입니다.

Previously, octal literals that contained invalid numbers were silently

PHP 공식 원문에 표시된 Previously, octal literals that contained invalid numbers were silently 항목의 문구를 확인하는 문서입니다.

strings containing a literal \u{ followed by an invalid

PHP 공식 원문에 표시된 strings containing a literal \u{ followed by an invalid 항목의 문구를 확인하는 문서입니다.

throw new Exception("Invalid integer!");

PHP 공식 원문에 표시된 throw new Exception("Invalid integer!"); 항목의 문구를 확인하는 문서입니다.

utf8_encode() and utf8_decode() have been deprecated.

PHP 공식 원문에 표시된 utf8_encode() and utf8_decode() have been deprecated. 항목의 문구를 확인하는 문서입니다.

Allowed memory size exhausted

WordPress 설치에 원하는 작업을 수행할 충분한 메모리가 없을 때 표시되는 오류입니다.

Maximum execution time of 30 seconds exceeded

WordPress에서 프로세스 완료 시간이 길어 최대 실행 시간을 초과할 때 표시될 수 있는 메시지입니다.

parse error: unexpected

WordPress에서 ‘parse error: unexpected’가 표시될 때 unexpected 뒤의 토큰으로 누락했을 수 있는 문자를 확인합니다.

Syntax Error

PHP 구조를 작성하는 과정에서 발생하는 구문 오류입니다. 오류 메시지에 표시된 파일과 대략적인 줄 번호 주변을 확인합니다.

Use of an undefined constant

WordPress에서 정의되지 않은 상수 사용 오류가 나타날 때 변수 참조와 배열 키 표기를 확인하는 방법입니다.

You cannot set this directive with

PHP 공식 원문에 표시된 You cannot set this directive with 항목의 문구를 확인하는 문서입니다.

관련 체크리스트

PHP 분석 태그 운영 확인표

PHP에서 분석 태그 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP 데이터베이스 연결 운영 확인표

PHP에서 데이터베이스 연결 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP DNS 레코드 운영 확인표

PHP에서 DNS 레코드 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP 파일 업로드 운영 확인표

PHP에서 파일 업로드 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP 로그인·세션 운영 확인표

PHP에서 로그인·세션 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP 메일 발송·수신 운영 확인표

PHP에서 메일 발송·수신 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP 파일 권한 운영 확인표

PHP에서 파일 권한 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP 리디렉션 운영 확인표

PHP에서 리디렉션 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP 런타임 버전 운영 확인표

PHP에서 런타임 버전 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP 검색 색인 운영 확인표

PHP에서 검색 색인 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

PHP SSL·도메인 운영 확인표

PHP에서 SSL·도메인 문제가 발생했을 때 변경 전에 관찰값과 설정 위치를 확인하는 국내 운영 점검표입니다.

참고 자료

The PHP Group · 공식 자료 (새 창에서 열림)

확인 범위: definition, runtime-settings, memory-limit · 확인일: 2026-07-23

The PHP Group · 공식 자료 (새 창에서 열림)

확인 범위: error-levels, fatal-error · 확인일: 2026-07-23