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 값 확인
- phpinfo() 함수를 사용한 테스트 파일 생성
## edit info.php
<?
phpinfo();
?>
- 브라우저로 파일 접근하여 memory limit local value값 확인
- phpinfo에서 Local Value가 현재 계정에 적용된 메모리 제한입니다.
- FTP / SSH 를 통해 서버 접근을 합니다. ( 본문에서는 SSH를 통한 방법으로 안내 합니다. )
- FTP/SFTP: 파일을 서버에 올리고 내려받는 방법(프로그램)
- SSH: 명령어로 서버에 접속하는 안전한 방법
-
www 폴더 최상단의 .htaccess 파일을 편집기로 엽니다.
-
하단에 php memory_limit 설정 값을 넣습니다.
## edit .htaccess
PHP_FLAG register_globals ON
PHP_VALUE mysql.default_charset UTF8
PHP_VALUE memory_limit 256M
- 저장후 브라우저에서 phpinfo() 함수를 통해 변경된 local value 값을 확인합니다.
- Local Value가 설정한 값(예: 256M)으로 보이면 정상 적용입니다.
- 관리자 패널 > 도구 > 사이트 건강 > 정보 페이지에서도 확인 가능합니다.
