Fatal error: Allowed memory size of N bytes exhausted (tried to allocate N bytes)
PHP 스크립트가 memory_limit로 정해진 허용 메모리 상한을 초과해 실행이 중단될 때 표시되는 치명적 오류입니다.
핵심 답변
"Allowed memory size exhausted" 오류는 PHP 스크립트가 memory_limit 설정으로 정해진 메모리 상한을 넘어서 실행이 중단됐다는 뜻입니다. 현재 memory_limit 값, 어떤 요청·플러그인에서 초과가 발생하는지, 상한을 올린 뒤 재현 여부를 순서대로 확인해야 합니다.
상세 설명
"Allowed memory size exhausted" 오류는 PHP 스크립트가 실행 중 할당하려던 메모리가 memory_limit 설정으로 정해진 상한을 넘어서면서 실행이 중단됐다는 뜻입니다. PHP 문서에 따르면 memory_limit는 하나의 스크립트가 할당할 수 있는 최대 메모리 양(바이트) 을 지정하며, 잘못 작성된 스크립트가 서버의 모든 메모리를 소진하는 것을 막기 위한 값입니다.
이 오류는 원인 자체라기보다, PHP가 상한에 도달했음을 관찰하고 실행을 멈춘 결과입니다.
memory_limit가 무엇을 결정하는가
PHP 문서 기준으로 memory_limit의 기본값은 128M이며, 값은 바이트 단위 정수 또는 K·M·G 약식 표기로 지정할 수 있습니다. WordPress 문서는 이 오류를 "WordPress 설치 환경에 원하는 작업을 수행할 만큼의 메모리가 없다" 는 상태로 설명합니다.
| 관찰 위치 | 확인할 내용 |
|---|---|
| PHP 설정 | 현재 memory_limit 값과 적용 범위 |
| 오류 메시지 | 초과가 발생한 파일·라인과 요청 경로 |
| 애플리케이션 | 특정 플러그인·페이지·일괄 작업에서만 재현되는지 |
확인 순서
허용량을 올리기 전에, 먼저 어떤 요청에서 초과가 발생하는지 범위를 좁혀야 합니다. 특정 플러그인이나 대량 처리 작업에서만 재현된다면 상한 조정만으로 끝나지 않을 수 있기 때문입니다. 서버 오류를 나눠 확인하는 절차는 서버 오류 분류 체크리스트를 따릅니다.
허용 메모리 상한 올리기
WordPress 문서는 두 가지 방법을 제시합니다.
wp-config.php에서 메모리 상한을 올립니다.php.ini를 편집해 상한을 올립니다.php.ini는 WordPress에 기본 포함되지 않는 파일이므로, 익숙하지 않다면 호스팅 업체에 메모리 상한 증가를 요청하라고 문서는 안내합니다.
++설정을 바꾸기 전 원본을 백업하고 이전 값을 기록해, 오류가 재현되지 않을 때 되돌릴 수 있게 합니다. memory_limit를 -1로 두면 제한이 사라져 문제 스크립트가 서버 메모리를 소진할 수 있으므로 사용하지 않습니다.++
상한을 올린 뒤에는 같은 요청을 다시 실행해 동일한 위치에서 오류가 재현되는지 확인합니다.
현재 증상
- PHP 치명적 오류
확인 순서
- 관찰 대상은 현재 memory_limit 값입니다. phpinfo() 또는 php.ini에서 확인하며, 기대 결과는 스크립트가 필요로 하는 양보다 낮게 설정돼 있는지 파악하는 것입니다.
- 관찰 대상은 오류 메시지에 표시된 초과 시점 파일·라인과 요청 경로입니다. 기대 결과는 특정 페이지·플러그인·작업에서만 초과가 재현되는지 범위를 좁히는 것입니다.
- memory_limit를 올린 뒤 동일한 요청을 다시 실행해 같은 위치에서 오류가 재현되는지 확인합니다.
주의할 조치
- memory_limit를 -1(무제한)로 설정하지 않습니다. PHP 문서상 -1은 메모리 제한을 없애는 값이며, 이렇게 하면 문제 스크립트가 서버 전체 메모리를 소진할 수 있습니다.
- wp-config.php나 php.ini를 수정하기 전에 원본을 백업하고, 오류가 재현되지 않으면 변경을 되돌릴 수 있도록 이전 값을 기록합니다.
- 상한을 올려도 특정 코드가 계속 메모리를 과도하게 사용한다면, 상한 증가만으로 원인이 해결됐다고 단정하지 않습니다.
서버 오류 원인 구간 확인
서버 오류가 발생하면 먼저 응답 코드와 오류 로그로 서버 측 문제임을 확인하고, 애플리케이션 코드·구성 파일·플러그인·데이터베이스·메모리를 하나씩 분리해 원인 구간을 좁혀야 합니다. 한 부분만 바꾼 뒤 재현 여부를 확인해 인과를 확정합니다.
- 반환된 상태 코드가 5xx인지 확인합니다. 통과 기준은 500 등 서버 오류 응답이 관찰되어 클라이언트가 아닌 서버 측 문제로 좁혀지는 것입니다.
- 서버·애플리케이션 오류 로그(예 debug.log, 서버 error log)에 해당 시각의 오류가 기록됐는지 확인합니다. 통과 기준은 요청 시각과 일치하는 오류 항목을 찾아내는 것입니다.
- 최근 변경분(코드·구성 파일·플러그인·테마)을 되돌리거나 비활성화한 뒤 재현되는지 확인합니다. 통과 기준은 한 번에 한 요소만 바꿔 원인 요소를 특정하는 것입니다.
- 데이터베이스 연결과 애플리케이션 실행(메모리·실행 시간)을 각각 분리해 확인합니다. 통과 기준은 DB 연결 실패와 실행 자원 부족 중 어느 구간인지 구분되는 것입니다.
- 원인으로 지목한 구간만 수정한 뒤 동일 URL을 다시 요청해 5xx가 사라졌는지 확인합니다. 통과 기준은 반복 요청에서 오류가 재현되지 않는 것입니다.
근거와 출처
확인 범위: definition, memory-limit-directive, resolution · 확인일: 2026-07-23
확인 범위: definition, resolution · 확인일: 2026-07-23