기술 가이드

PHP 메모리 부족 오류 해결: memory_limit 늘리기

4 min read 서버관리 업데이트됨 09 Oct 2025
PHP 메모리 부족 오류 해결 — memory_limit 늘리기
PHP 메모리 부족 오류 해결 — memory_limit 늘리기

문제 상황: 에러 예시

다음과 같은 에러가 표시되는 경우가 흔합니다:

PHP Fatal error: Out of memory (allocated 49545216) (tried to allocate 77824 bytes) in /home/xxxxx/public_html/xyz/admin.php(1758) on line 40

위 오류는 특정 PHP 스크립트가 PHP에 할당된 메모리보다 더 많은 메모리를 요구했을 때 발생합니다. 즉, memory_limit 설정을 늘리거나 스크립트/구성 문제를 해결해야 합니다.

왜 일시적으로 Apache 재시작으로 해결되나

서버에서 메모리 누수나 일시적 과부하로 프로세스가 비정상 상태가 될 수 있습니다. Apache(httpd) 재시작은 모든 워커 프로세스를 새로 시작해 즉시 증상을 없애지만, 근본 원인은 남아 있으므로 영구 해결로 보아선 안 됩니다.

중요: 재시작은 임시 조치입니다. 원인 분석 없이 반복하면 동일 문제가 재발합니다.

영구 해결 — memory_limit 늘리는 4가지 방법 (우선순위 권장)

  1. php.ini 수정 (권장)

    • 시스템에서 실제로 사용되는 php.ini 파일 위치를 확인하려면 웹 루트에 다음 파일을 만드세요.
    • 브라우저로 해당 파일을 열면 “Loaded Configuration File” 항목에 실제 php.ini 경로가 표시됩니다(예: /usr/local/lib/php.ini 등).
    • 텍스트 편집기로 php.ini를 열고 memory_limit 값을 찾습니다. 예:
    memory_limit = 8M
    • 필요에 따라 값을 증가시킵니다. 예: memory_limit = 32M 또는 memory_limit = 64M 등.
    • 변경 후 Apache 또는 PHP-FPM을 재시작하세요: sudo systemctl restart httpd 또는 sudo systemctl restart php-fpm.
  2. 런타임에서 메모리 제한 변경 (임시 또는 스크립트별)

    • php.ini에 접근할 수 없을 때, 문제가 발생하는 PHP 파일 상단에 다음을 추가할 수 있습니다:
    ini_set('memory_limit', '32M');
    • 이 방법은 해당 스크립트 또는 요청 범위에만 적용되며, 서버 전체 설정을 바꾸지 않습니다.
  3. .htaccess에 설정 추가 (Apache + mod_php 환경)

    • .htaccess에 아래 줄을 추가하면 디렉터리 단위로 적용됩니다(단, 호스트가 AllowOverride로 허용해야 함).
    php_value memory_limit 32M
  4. WordPress의 경우 wp-config.php에서 설정

    • 워드프레스 사이트라면 다음을 wp-config.php에 추가해 WP가 요청하는 메모리를 늘릴 수 있습니다:
    define('WP_MEMORY_LIMIT', '32M');

언제 어떤 방법을 먼저 선택할까 (의사결정 요약)

  • 서버 전체 영향을 주려면 php.ini 수정이 최선입니다.
  • 특정 플러그인/스크립트 문제면 ini_set()로 테스트하세요.
  • 공유호스팅에서 php.ini 접근 불가하면 .htaccess나 wp-config.php를 시도하세요.
  • 위 모두 실패하면 호스팅 업체에 문의하세요.

문제 해결 체크리스트 (역할별)

  • 개발자 / 관리자:

    • phpinfo()로 loaded php.ini 경로 확인
    • php.ini에서 memory_limit 값 확인 및 백업 후 수정
    • 변경 후 Apache/PHP-FPM 재시작
    • 스크립트에서 불필요한 메모리 할당(대량 배열, 파일 버퍼링 등) 제거
    • 메모리 요구가 과도한 코드(루프, 재귀, 대용량 파일 처리) 리팩터링
  • 호스팅 관리자 / 운영자:

    • 서버 로그(예: /var/log/httpd/error_log, PHP-FPM 로그)에서 메모리 오류 패턴 확인
    • 리소스 제한(ulimit, cgroups) 확인
    • 과도한 동시 접속/백그라운드 작업 여부 확인

원인 분석: 어떤 스크립트가 메모리를 많이 쓰는지 찾는 방법

  1. 에러 로그의 파일명과 라인 번호 확인 (예: admin.php(1758) on line 40).
  2. 해당 부분을 검토해 대용량 배열, 파일 전체 로드, 이미지 처리, 외부 API 반복 호출 등을 찾아라.
  3. Xdebug나 New Relic 같은 APM(애플리케이션 성능 모니터링) 도구로 메모리 프로파일링을 수행하면 원인 파악이 쉬워집니다.
  4. 스크립트를 분해하여 작은 입력/작동 단위로 테스트해 메모리 증가 지점을 재현하세요.

대안 접근법 및 주의점

  • 메모리를 무한히 늘리는 것은 피하세요. 문제의 근본 원인이 메모리 누수나 비효율적 코드라면 단기적으로만 해결됩니다.
  • 공유호스팅에서는 제공되는 상한이 있으므로 호스트 정책을 확인해야 합니다.
  • PHP의 다른 설정(예: max_execution_time, upload_max_filesize)도 영향을 줄 수 있으니 종합적으로 검토하세요.

언제 이 방법들이 실패하는가 (예시)

  • PHP 프로세스 외부(운영체제 수준)에서 메모리 제한이 걸려 있는 경우
  • 호스트가 .htaccess 또는 ini_set()을 차단한 경우
  • 스크립트 자체에 심각한 메모리 누수 또는 무한루프가 있는 경우
  • 컨테이너 환경에서 컨테이너 리소스 쿼터가 낮게 설정된 경우

이럴 땐 호스팅 사업자나 인프라 담당자와 협의해 컨테이너/VM의 메모리 할당을 늘리거나 코드를 수정해야 합니다.

추가 자료: 빠른 명령 예시

  • Apache 재시작
sudo systemctl restart httpd   # CentOS/RedHat 계열
sudo systemctl restart apache2 # Ubuntu/Debian 계열
  • PHP-FPM 재시작
sudo systemctl restart php-fpm
# 또는
sudo systemctl restart php7.4-fpm

의사결정 흐름(간단한 플로우차트)

flowchart TD
  A[오류 발생: Out of memory] --> B{php.ini 접근 가능한가?}
  B -- 예 --> C[php.ini에서 memory_limit 증가]
  B -- 아니오 --> D{워드프레스인가?}
  D -- 예 --> E[wp-config.php에 WP_MEMORY_LIMIT 추가]
  D -- 아니오 --> F[해당 스크립트에 ini_set 추가]
  C --> G[재시작 후 재검증]
  E --> G
  F --> G
  G --> H{해결됨?}
  H -- 예 --> I[모니터링 계속]
  H -- 아니오 --> J[호스트/운영자에 문의 및 프로파일링]

간단한 체크리스트 템플릿

  • 문제 식별: 로그 + 에러 메시지 수집
  • 우선 조치: Apache/PHP 재시작(임시 완화)
  • 영구 조치: php.ini 또는 대체 방법 수정
  • 검증: 오류 재현 시도 및 로그 확인
  • 개선: 코드를 리팩터링하고 메모리 사용량 테스트

결론

PHP의 “Out of memory” 오류는 대부분 PHP 메모리 제한을 늘리면 해결됩니다. 다만 임시 조치(재시작)로 문제를 가리기보다는 php.ini 수정, 디렉터리/스크립트 단위 설정, 코드 최적화 순으로 접근하세요. 필요 시 호스팅 업체나 인프라 팀과 협력해 근본 원인을 찾아내고 재발을 방지해야 합니다.

요약 아래를 참고하세요.

Image Courtesy: Clarkandransom


요약 및 참고표

  • 문제: PHP 스크립트가 허용된 메모리보다 더 많은 메모리를 요구
  • 4가지 해결책: php.ini, ini_set(), .htaccess, wp-config.php
  • 임시 해결: Apache 재시작
  • 권장: 근본 원인 분석(로그, 프로파일링) 후 적절한 메모리 값 설정 및 코드 개선
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

넷플릭스 영화·시리즈 다운로드 방법 및 설정
스트리밍

넷플릭스 영화·시리즈 다운로드 방법 및 설정

Windows RT에서 플래시 사이트 화이트리스트 추가
가이드

Windows RT에서 플래시 사이트 화이트리스트 추가

Ubuntu 10.10에서 Photoshop CS5 실행하기
설치 가이드

Ubuntu 10.10에서 Photoshop CS5 실행하기

Netflix 오프라인 다운로드 완벽 가이드
가이드

Netflix 오프라인 다운로드 완벽 가이드

Firefox '이미 실행 중' 오류 해결 가이드
브라우저

Firefox '이미 실행 중' 오류 해결 가이드

팀 쿡: 코딩을 영어보다 먼저 배워야 하는 이유
기술 교육

팀 쿡: 코딩을 영어보다 먼저 배워야 하는 이유