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
- 정정 이력
- 2026-07-29 이후 기록 없음
- 관련 기술
현재 증상
- 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 또는 페이지 단위 조회 |
| 재귀적인 연결 계정 탐색 | 재귀 처리 중 메모리 초과 | 방문 값 미추적으로 종료 조건 불성립 | 누적 배열 전달 및 이미 방문한 값 건너뛰기 |
진단 순서
- [Observation] 오류가 발생하는 처리 구간에서 반복 또는 재귀 호출에 따라 메모리 사용량이 증가하는지 측정합니다.
- [Observation] 대용량 데이터 조회가 포함되면 결과 전체를 버퍼링하는지 확인합니다.
- [Observation] 재귀 탐색이면 방문한 값을 유지하고 이미 방문한 값을 건너뛰는지 확인합니다.
- [Observation] 확인된 원인에 따라 메모리 누수 또는 불필요한 누적을 분리하고, 조회 결과를 나누어 처리하거나 방문 값 추적을 적용합니다.
수정 후 다시 확인
서버 오류 원인 구간 확인
서버 오류가 발생하면 먼저 응답 코드, 발생 URL·시각, 같은 시각의 오류 로그를 기록해야 합니다. 그 뒤에 실제로 확인된 적용 환경에서 코드·구성·의존성·실행 자원을 한 항목씩 분리해 재현 여부를 확인합니다.
전체 확인 항목 보기참고 자료
확인 범위: definition, memory-limit-directive, resolution · 확인일: 2026-07-23
WordPress.org · 공식 자료 · 확인 범위: definition, resolution · 확인일: 2026-07-23
확인 범위: 반복 처리 중 메모리 사용량이 증가하면서 허용 메모리 초과 오류가 발생했습니다., 반복마다 증가하는 지점을 측정해 누수나 불필요한 누적 여부를 진단했습니다. · 확인일: 2026-07-29
확인 범위: 대용량 MySQL 결과를 일괄 처리하는 PHP 배치에서 허용 메모리 초과 오류가 발생했습니다., 전체 결과를 버퍼링하지 않도록 unbuffered query 또는 페이지 단위 조회를 적용해 해결했습니다. · 확인일: 2026-07-29
확인 범위: 재귀적인 연결 계정 탐색 중 허용 메모리 초과 오류가 발생했습니다., 방문한 값을 유지하지 않아 종료 조건이 성립하지 않았으며, 누적 배열로 방문 값을 추적해 이미 방문한 값을 건너뛰도록 수정했습니다. · 확인일: 2026-07-29