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 자체가 사용할 수 있는 최대 메모리입니다.
즉, 서버에서 허용하는 최대 메모리이며, 워드프레스에서 이보다 큰 값을 설정해도 사용할 수 없습니다.
예를 들어
PHP memory limit 256M
이라면
define( 'WP_MEMORY_LIMIT', '512M' );
으로 설정해도 실제 사용 가능한 메모리는 256MB입니다.
2. WordPress Constants
여기에는 다음과 같은 값이 표시됩니다.
많은 분들이 여기서 헷갈립니다. 두 값은 의미가 서로 다릅니다.
WP_MEMORY_LIMIT
일반적인 웹페이지를 방문했을 때 사용하는 메모리 제한입니다.
예를 들어
- 글 보기
- 메인 페이지
- 카테고리 페이지
등이 여기에 해당합니다.
기본값은 보통 40M 입니다.
WP_MAX_MEMORY_LIMIT
관리자 화면에서 무거운 작업을 수행할 때 사용하는 메모리입니다.
예를 들면
- 플러그인 설치
- 테마 설치
- 이미지 처리
- 업데이트
- 가져오기(Import)
- 백업
등이 여기에 해당합니다.
기본적으로 PHP의 최대 메모리까지 사용할 수 있도록 설정됩니다.
WP_MAX_MEMORY_LIMIT 256M
왜 40M으로 표시되는가?
워드프레스 코어에는 다음과 같은 코드가 있습니다.
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 메모리 제한을 높여주거나 서버 설정(호스팅 변경)을 변경해야 합니다.

