Warning: Constant WP_MEMORY_LIMIT already defined in /www/wp-config.php on line 123 에러 해결법

워드프레스에서 wp-config.php 파일에 아래와 같이 메모리 제한을 설정했는데,
define( 'WP_MEMORY_LIMIT', '256M' );

다음과 같은 오류가 발생하는 경우가 있습니다.

Warning: Constant WP_MEMORY_LIMIT already defined in /www/wp-config.php on line 123

 

원인

이 오류는 WP_MEMORY_LIMIT 상수가 이미 정의되어 있는데 다시 정의했기 때문에 발생합니다.

즉,

define( 'WP_MEMORY_LIMIT', '256M' );

이 코드가 두 번 이상 실행되고 있는 것입니다.


현재 메모리 설정 확인하기

현재 서버에서 어떤 메모리 제한이 적용되고 있는지는 워드프레스 관리자에서 확인할 수 있습니다.

도구 → 사이트 건강 → 정보(Info)

여기에서 다음 두 항목을 확인합니다.

1. Server

PHP memory limit


이 값은 PHP 자체가 사용할 수 있는 최대 메모리입니다.

즉, 서버에서 허용하는 최대 메모리이며, 워드프레스에서 이보다 큰 값을 설정해도 사용할 수 없습니다.


예를 들어

PHP memory limit 256M

이라면

define( 'WP_MEMORY_LIMIT', '512M' );

으로 설정해도 실제 사용 가능한 메모리는 256MB입니다.


2. WordPress Constants

여기에는 다음과 같은 값이 표시됩니다.

Warning: Constant WP_MEMORY_LIMIT already defined in /www/wp-config.php on line 123 에러 해결법


많은 분들이 여기서 헷갈립니다. 두 값은 의미가 서로 다릅니다.


WP_MEMORY_LIMIT

일반적인 웹페이지를 방문했을 때 사용하는 메모리 제한입니다.


예를 들어

  • 글 보기
  • 메인 페이지
  • 카테고리 페이지

등이 여기에 해당합니다.

기본값은 보통 40M 입니다.


WP_MAX_MEMORY_LIMIT

관리자 화면에서 무거운 작업을 수행할 때 사용하는 메모리입니다.


예를 들면

  • 플러그인 설치
  • 테마 설치
  • 이미지 처리
  • 업데이트
  • 가져오기(Import)
  • 백업

등이 여기에 해당합니다.

기본적으로 PHP의 최대 메모리까지 사용할 수 있도록 설정됩니다.

WP_MAX_MEMORY_LIMIT 256M


왜 40M으로 표시되는가?

Warning: Constant WP_MEMORY_LIMIT already defined in /www/wp-config.php on line 123 에러 해결법

워드프레스 코어에는 다음과 같은 코드가 있습니다.

if ( ! defined( 'WP_MEMORY_LIMIT' ) ) {
    define( 'WP_MEMORY_LIMIT', '40M' );
}

즉, 이미 정의되어 있지 않다면 자동으로 40MB를 사용합니다.


그럼 wp-config.php에서 다시 정의하면?

중복 정의 오류를 피하려면 아래처럼 작성하면 됩니다.

if ( ! defined( 'WP_MEMORY_LIMIT' ) ) {
    define( 'WP_MEMORY_LIMIT', '512M' );
}

if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {
    define( 'WP_MAX_MEMORY_LIMIT', '512M' );
}

이렇게 하면

Warning: Constant WP_MEMORY_LIMIT already defined

오류는 발생하지 않습니다.


그런데도 Site Health 값이 바뀌지 않는 이유

예를 들어 서버가

PHP memory limit 256M

이라면 아무리

define( 'WP_MEMORY_LIMIT', '512M' );

처럼 설정해도 실제 사용할 수 있는 메모리는 256MB입니다.

즉, 워드프레스 설정보다 PHP의 memory_limit이 우선합니다.

따라서 Site Health의 메모리 값도 그대로 표시될 수 있습니다.



정리

Warning: Constant WP_MEMORY_LIMIT already defined 오류는 같은 상수를 두 번 정의해서 발생하는 문제입니다. defined()를 이용하면 오류는 해결할 수 있습니다.

하지만 메모리 제한 자체를 늘리고 싶다면 wp-config.php만 수정해서는 해결되지 않을 수 있습니다.

실제 한도는 서버의 PHP memory_limit에 의해 결정되므로, 서버가 256MB로 설정되어 있다면 워드프레스에서 512MB를 지정해도 256MB 이상 사용할 수 없습니다.

즉, 오류 해결메모리 증가는 서로 다른 문제입니다. 오류는 코드 수정으로 해결할 수 있지만, 메모리를 더 사용하려면 호스팅 업체에서 PHP 메모리 제한을 높여주거나 서버 설정(호스팅 변경)을 변경해야 합니다.

Copyright ⓒ TECHWILLGO.COM All Rights Reserved. 컨텐츠 무단전재 복사 재배포 금지
다음 이전