DEV WIKI
백엔드 · 오류·증상

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 값, 어떤 요청·플러그인에서 초과가 발생하는지, 상한을 올린 뒤 재현 여부를 순서대로 확인해야 합니다.
먼저 확인할 항목
관찰 대상은 현재 memory_limit 값입니다. phpinfo() 또는 php.ini에서 확인하며, 기대 결과는 오류가 난 요청에 적용된 상한값을 기록하는 것입니다.
적용 범위
현재 증상과 본문에 적은 관찰 조건이 함께 확인된 경우
출처 확인일
2026-07-29
최종 검토
2026-07-23
수정일
2026-07-25
관련 기술
오류·수정 제보 (새 창에서 열림)

현재 증상

  • PHP 치명적 오류

먼저 확인할 항목

관찰 대상은 현재 memory_limit 값입니다. phpinfo() 또는 php.ini에서 확인하며, 기대 결과는 오류가 난 요청에 적용된 상한값을 기록하는 것입니다.

관찰 대상은 오류 메시지에 표시된 초과 시점 파일·라인과 요청 경로입니다. 기대 결과는 특정 페이지·플러그인·작업에서만 초과가 재현되는지 범위를 좁히는 것입니다.

memory_limit를 조정한 뒤 동일한 요청을 다시 실행해 같은 위치에서 오류가 재현되는지 확인합니다. 기대 결과는 상한 조정 전후의 재현 결과를 비교할 수 있는 것입니다.

피해야 할 조치

주의

  • memory_limit를 -1(무제한)로 설정하지 않습니다. PHP 문서상 -1은 메모리 제한을 없애는 값이며, 이렇게 하면 문제 스크립트가 서버 전체 메모리를 소진할 수 있습니다.
  • wp-config.php나 php.ini를 수정하기 전에 원본을 백업하고, 오류가 재현되지 않으면 변경을 되돌릴 수 있도록 이전 값을 기록합니다.
  • 상한을 올려도 특정 코드가 계속 메모리를 과도하게 사용한다면, 상한 증가만으로 원인이 해결됐다고 단정하지 않습니다.

환경별 원인과 조치

"Allowed memory size exhausted" 오류는 PHP 스크립트가 실행 중 할당하려던 메모리가 memory_limit 설정으로 정해진 상한을 넘어서면서 실행이 중단됐다는 뜻입니다. PHP 문서에 따르면 memory_limit하나의 스크립트가 할당할 수 있는 최대 메모리 양(바이트) 을 지정하며, 잘못 작성된 스크립트가 서버의 모든 메모리를 소진하는 것을 막기 위한 값입니다.

이 오류는 원인 자체라기보다, PHP가 상한에 도달했음을 관찰하고 실행을 멈춘 결과입니다.

적용 범위와 다음 문서

이 오류는 PHP 실행 환경에서 발생할 수 있으며, WordPress가 설치돼 있다는 사실만으로 원인을 확정하지 않습니다. 화면·오류 로그·요청 정보에서 확인한 문구를 기준으로 다음 문서를 고릅니다.

관찰 결과다음 판단
PHP 오류 로그에 Allowed memory size exhausted가 표시됨이 문서에서 상한값과 재현 범위를 확인
500 Internal Server Error만 보이고 PHP 오류 문구는 없음500 Internal Server Error에서 환경과 로그를 먼저 확인
WordPress 화면 또는 로그에 같은 문구가 표시됨WordPress 사이트에 오류가 표시돼요에서 WordPress 관련 문서를 함께 확인

WordPress 문서는 WordPress 환경에서의 설정 위치를 안내합니다. PHP 오류 문구나 WordPress 환경이 확인되지 않았다면 이 문서에서 wp-config.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로 두면 제한이 사라져 문제 스크립트가 서버 메모리를 소진할 수 있으므로 사용하지 않습니다.++

상한을 조정한 뒤에는 같은 요청을 다시 실행해 동일한 위치에서 오류가 재현되는지 확인합니다. 오류가 사라져도 어떤 요청·작업에서 변경을 확인했는지 기록해, 다른 경로의 메모리 사용까지 해결됐다고 단정하지 않습니다.

원인 분포

[Observation] 제공된 3건의 사례에서는 다음 원인이 각각 1건씩 관측되었습니다.

관측 원인사례 수
반복 처리 중 메모리 누수 또는 불필요한 누적1
대용량 MySQL 결과 전체 버퍼링1
재귀 탐색에서 방문 값 미추적1

[Observation] 위 분포는 관측된 사례 기준이며 실제 발생 빈도를 의미하지 않습니다.

오진 함정

[Observation] 메모리 한도를 높이는 것만으로 문제를 해결하려 하지 않고, 반복 처리에서 메모리 사용량이 증가하는 지점을 측정해야 하는 사례가 있었습니다.

[Observation] 대용량 결과 처리에서는 오류의 원인이 데이터 자체가 아니라 전체 결과를 한 번에 버퍼링하는 방식일 수 있었습니다.

[Observation] 재귀 함수에서는 메모리 부족이 단순한 메모리 한도 문제로 보일 수 있지만, 방문 값 미추적으로 종료 조건이 성립하지 않은 사례가 있었습니다.

환경 매트릭스

환경 또는 처리 방식증상확인된 원인수정
반복 처리반복마다 메모리 사용량 증가누수 또는 불필요한 누적증가 지점 측정 및 원인 분리
PHP 배치와 대용량 MySQL 결과결과 일괄 처리 중 메모리 초과전체 결과 버퍼링unbuffered query 또는 페이지 단위 조회
재귀적인 연결 계정 탐색재귀 처리 중 메모리 초과방문 값 미추적으로 종료 조건 불성립누적 배열 전달 및 이미 방문한 값 건너뛰기

진단 순서

  1. [Observation] 오류가 발생하는 처리 구간에서 반복 또는 재귀 호출에 따라 메모리 사용량이 증가하는지 측정합니다.
  2. [Observation] 대용량 데이터 조회가 포함되면 결과 전체를 버퍼링하는지 확인합니다.
  3. [Observation] 재귀 탐색이면 방문한 값을 유지하고 이미 방문한 값을 건너뛰는지 확인합니다.
  4. [Observation] 확인된 원인에 따라 메모리 누수 또는 불필요한 누적을 분리하고, 조회 결과를 나누어 처리하거나 방문 값 추적을 적용합니다.

수정 후 다시 확인

서버 오류 원인 구간 확인

서버 오류가 발생하면 먼저 응답 코드, 발생 URL·시각, 같은 시각의 오류 로그를 기록해야 합니다. 그 뒤에 실제로 확인된 적용 환경에서 코드·구성·의존성·실행 자원을 한 항목씩 분리해 재현 여부를 확인합니다.

전체 확인 항목 보기

참고 자료

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

확인 범위: definition, memory-limit-directive, resolution · 확인일: 2026-07-23

Common WordPress errors – Advanced Administration Handbook | Developer.WordPress.org (새 창에서 열림)

WordPress.org · 공식 자료 · 확인 범위: definition, resolution · 확인일: 2026-07-23

Stack Overflow · 운영 사례 (새 창에서 열림)

확인 범위: 반복 처리 중 메모리 사용량이 증가하면서 허용 메모리 초과 오류가 발생했습니다., 반복마다 증가하는 지점을 측정해 누수나 불필요한 누적 여부를 진단했습니다. · 확인일: 2026-07-29

Stack Overflow · 운영 사례 (새 창에서 열림)

확인 범위: 대용량 MySQL 결과를 일괄 처리하는 PHP 배치에서 허용 메모리 초과 오류가 발생했습니다., 전체 결과를 버퍼링하지 않도록 unbuffered query 또는 페이지 단위 조회를 적용해 해결했습니다. · 확인일: 2026-07-29

Stack Overflow · 운영 사례 (새 창에서 열림)

확인 범위: 재귀적인 연결 계정 탐색 중 허용 메모리 초과 오류가 발생했습니다., 방문한 값을 유지하지 않아 종료 조건이 성립하지 않았으며, 누적 배열로 방문 값을 추적해 이미 방문한 값을 건너뛰도록 수정했습니다. · 확인일: 2026-07-29