본문으로 건너뛰기

PHP 메모리 제한 값을 어떻게 변경하나요?

  • 💡 요약 정리
  • 워드프레스 기본 메모리 제한은 단일 사이트 40M(WordPress 5.9 기준), 멀티사이트 64M입니다.
  • 메모리 부족 오류 발생 시 .htaccess에서 PHP memory_limit을 높이거나 wp-config.php에서 WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT를 설정합니다.
  • 최대치는 서버 php.ini의 memory_limit를 넘을 수 없습니다.
  • 변경 사항은 phpinfo()와 관리자 패널 > 도구 > 사이트 건강 > 정보에서 확인합니다.

워드프레스는 기본적으로 PHP 어플리케이션 언어를 통해 구동되며, PHP 스크립트가 얼마나 많은 메모리를 할당 받을 수 있는지에 제한을 두고 있습니다. 기본 제한 값은 5.9 브랜치 기준 40M이며, 멀티사이트 구성의 경우 64M으로 제한 됩니다.

포스트를 작성하거나, 특정 테마나 플러그인을 사용할 때 이보다 더 많은 메모리 사용이 필요한 경우가 있습니다. 하지만 테마나 플러그인에서 전역 설정값을 추가하기도 하지만 정상 동작하지 않고 에러만 발생 하는 경우가 있습니다.

다음과 같은 오류가 대표적입니다.

Fatal error: Out of memory (allocated 12345678) (tried to allocate 2345678bytes)
in /USERID/www/wp-includes/plugin.php on line 1000

이때, 전역 설정을 담당하는 wp-config.php 파일에 WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT 설정을 통해 직접 제한값 조절이 가능합니다.

해당 설정값은 웹서버에 전역 설정되어 있는 php.ini의 php memory limit 값에 제약을 받게 되며, WP_MEMORY_LIMIT 값이 더 크게 설정되어도 php.ini 의 제한 값으로 동작합니다.

워드프레스 설정 내 메모리 사용 제한값, .htaccess 파일을 통해 memory limit 설정을 변경 하는 방법을 안내 합니다.

1. 기본 개념 정리

  • a. WP_MEMORY_LIMIT - 프론트엔드에서 PHP 스크립트 구동에 대한 최대 메모리 할당량을 지정 (기본 64M)
  • b. WP_MAX_MEMORY_LIMIT - 백엔드 대시보드 에서 사용 가능한 메모리 할당량 (기본 256M)
  • c. 두 설정값은 php.ini에서 정의한 memory_limit 값을 넘지 못하므로 .htaccess 파일로 조정 필요
  • d. 기본 값은 wp-includes/default-constants.php 코어 설정 파일애서 확인 가능
##
# wp-includes/default-constants.phpif ( ! defined( 'WP_MEMORY_LIMIT' ) ) {if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {define( 'WP_MEMORY_LIMIT', $current_limit );} elseif ( is_multisite() ) {define( 'WP_MEMORY_LIMIT', '64M' );} else {define( 'WP_MEMORY_LIMIT', '40M' );}}if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) {define( 'WP_MAX_MEMORY_LIMIT', $current_limit );} elseif ( -1 === $current_limit_int || $current_limit_int > 268435456 /* = 256M */ ) {define( 'WP_MAX_MEMORY_LIMIT', $current_limit );} else {define( 'WP_MAX_MEMORY_LIMIT', '256M' );}}

2. .htaccess 파일에서 PHP memory_limit 변경하기

2.1 현재 memory_limit 값 확인

  1. phpinfo() 함수를 사용한 테스트 파일 생성
## edit info.php
<?
phpinfo();
?>
  1. 브라우저로 파일 접근하여 memory limit local value값 확인
phpinfo 페이지에서 memory_limit의 local value 확인 화면
  • phpinfo에서 Local Value가 현재 계정에 적용된 메모리 제한입니다.
  1. FTP / SSH 를 통해 서버 접근을 합니다. ( 본문에서는 SSH를 통한 방법으로 안내 합니다. )
  • FTP/SFTP: 파일을 서버에 올리고 내려받는 방법(프로그램)
  • SSH: 명령어로 서버에 접속하는 안전한 방법
  1. www 폴더 최상단의 .htaccess 파일을 편집기로 엽니다.

  2. 하단에 php memory_limit 설정 값을 넣습니다.

## edit .htaccess
PHP_FLAG register_globals ON
PHP_VALUE mysql.default_charset UTF8
PHP_VALUE memory_limit 256M
  1. 저장후 브라우저에서 phpinfo() 함수를 통해 변경된 local value 값을 확인합니다.
phpinfo 페이지에서 memory_limit 변경 후 값이 적용된 화면
  • Local Value가 설정한 값(예: 256M)으로 보이면 정상 적용입니다.
  1. 관리자 패널 > 도구 > 사이트 건강 > 정보 페이지에서도 확인 가능합니다.
워드프레스 관리자 사이트 건��강 정보 화면에서 서버 메모리 제한 확인
  • 워드프레스 내부에서도 현재 메모리 제한을 확인할 수 있습니다.

3. wp-config.php에서 WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT 변경하기

  1. FTP / SSH 프로토콜을 통해 서버에 접근합니다.
  2. www 폴더 바로 밑의 wp-config.php 전역 설정파일을 편집기로 엽니다.
  3. 하단에 WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT 설정값을 정의합니다.
## edit wp-config.php    /** Absolute path to the WordPress directory. */if ( ! defined( 'ABSPATH' ) ) {        define( 'ABSPATH', __DIR__ . '/' );}/** Sets up WordPress vars and included files. */require_once ABSPATH . 'wp-settings.php';define( 'WP_MEMORY_LIMIT', '256M' );define( 'WP_MAX_MEMORY_LIMIT', '512M');
  1. 저장 후 메모리 부족에러가 발생했던 작업을 다시 진행 해 봅니다.
중요: 위 설정은 서버의 php.ini에 지정된 memory_limit 값을 절대 넘을 수 없습니다. 필요 시 .htaccess에서 memory_limit을 먼저 높여야 합니다.

4. 주의사항

.htaccess 파일을 수정 하는 경우 구문 오류가 없도록 조심 해야 합니다.
오타가 있거나 잘못된 규칙이 입력된 경우 홈페이지 접근시 에러가 발생 할 수 있습니다. 수정 후에는 항상 브라우저 테스트를 진행해 주시기 바랍니다.


5. 접속 방법 가이드

FTP/SFTP, SSH, MYSQL 접속 방법은 아래 가이드 문서를 참고 바랍니다.