[워드프레스] 3. 설정 : wp-config.php 핵심 상수 완전 분석

워드프레스 해부 3편 - wp-config.php 핵심 상수 완전 분석

작성자

카테고리:

* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

(워드프레스 해부 ③) 설정

워드프레스에서 파일 하나만 꼽으라면 나는 wp-config.php를 고른다. 이게 있어야 워드프레스가 데이터베이스에 접속하고, 자기 자신을 어떻게 동작시킬지 안다. 반대로 이 파일이 털리면 사이트가 통째로 넘어간다. 그만큼 핵심이다.

들어 있는 핵심 상수는 이렇다.

// 데이터베이스 접속 — 이게 없으면 워드프레스는 아무것도 못 한다
define( 'DB_NAME', 'wordpress_db' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', '********' );
define( 'DB_HOST', 'localhost' );

// 보안 키(salt) — 쿠키·세션 암호화. 유출되면 즉시 교체
define( 'AUTH_KEY', '...무작위 문자열...' );
// (SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, 그리고 각 SALT)

// 테이블 접두사 — DB 테이블 이름 앞에 붙는다 (wp_posts 의 'wp_')
$table_prefix = 'wp_';

// 디버그
define( 'WP_DEBUG', false );

$table_prefix가 특히 재밌다. 이게 wp_면 글은 wp_posts 테이블에, 옵션은 wp_options에 저장된다. 한 데이터베이스에 워드프레스를 여러 개 깔 때 이 접두사를 다르게 줘서 구분한다. 보안상 기본값 wp_ 대신 다른 걸 쓰기도 한다.

직접 해보기

디버그를 켜서 워드프레스가 조용히 삼키던 오류·경고를 눈으로 보자. wp-config.php에서:

define( 'WP_DEBUG', true );       // 오류를 화면/로그에 표시
define( 'WP_DEBUG_LOG', true );   // wp-content/debug.log 파일로 기록
define( 'WP_DEBUG_DISPLAY', false ); // 방문자 화면엔 안 띄우고 로그만

이렇게 하면 wp-content/debug.log에 그동안 안 보이던 PHP 경고·플러그인 오류가 쌓이기 시작한다. 문제 추적할 때 제일 먼저 켜는 스위치다. 확인이 끝나면 운영 사이트에선 다시 꺼두는 게 좋다 — 로그가 무한정 커지고, 실수로 방문자에게 오류가 노출될 수 있으니까.

✅ 확인 — $table_prefix 값과 실제 DB의 테이블 이름 앞부분이 일치하는지 확인해 보자. 접두사가 wp_인데 테이블이 wp_posts라면 정상. 이게 어긋나면 워드프레스가 테이블을 못 찾아 백지 화면이 뜬다.

보안 키(salts) — 왜 있고 왜 바꾸나

AUTH_KEY를 비롯한 8개의 보안 키·솔트는 로그인 쿠키와 세션을 암호화한다. 설치 때 랜덤으로 생성되는데, 유출이 의심되면 이 값을 새로 바꾸는 것만으로 모든 로그인 세션이 무효화된다(전원 강제 로그아웃). WordPress.org의 solt(salt) 생성기에서 새로 뽑아 교체하면 된다.

define( 'AUTH_KEY',        '무작위-긴-문자열' );
define( 'SECURE_AUTH_KEY', '무작위-긴-문자열' );
define( 'LOGGED_IN_KEY',   '무작위-긴-문자열' );
define( 'NONCE_KEY',       '무작위-긴-문자열' );
// … SALT 4개도 함께 (총 8개)

자주 쓰는 동작 상수

상수하는 일
WP_DEBUG / WP_DEBUG_LOG디버깅·로그(6편)
WP_MEMORY_LIMITPHP 메모리 상한
DISABLE_WP_CRON가짜 크론 끄기(29편)
WP_POST_REVISIONS리비전 개수 제한
WP_HOME / WP_SITEURL사이트 주소 하드코딩(이전 시 편리)
DISALLOW_FILE_EDIT대시보드 코드 편집기 끄기(보안)

운영이라면 꼭 챙길 보안 상수

DISALLOW_FILE_EDIT를 true로 두면 대시보드 안의 플러그인·테마 파일 편집기가 사라진다 — 관리자 계정이 뚫려도 코드 주입을 어렵게 만드는 값싼 방어다. FORCE_SSL_ADMIN으로 관리자 로그인을 HTTPS로 강제하고, wp-config.php 파일 자체의 권한을 640이나 600으로 잠근다. 이 파일이 털리면 사이트가 통째로 넘어가기 때문이다.

$table_prefix와 파일 위치

$table_prefix는 테이블 접두어(7편)로, 한 DB에 여러 사이트를 깔 때 구분한다. 그리고 wp-config.php는 웹루트에 두는 게 기본이지만, 한 단계 위 디렉터리로 올리면 워드프레스가 자동으로 찾는다 — 웹에서 접근할 수 없는 곳에 둬 더 안전하다. 이 블로그도 민감 파일은 아파치 소유로 잠가, 사람 계정이 함부로 못 건드리게 해뒀다.

설정을 알았으니, 이제 실제로 워드프레스가 페이지를 만들어내는 순서(요청 생명주기)를 다음 편에서 따라가 본다. 주소창에 URL을 치는 순간부터 화면이 그려지기까지.

자주 묻는 질문 (FAQ)

wp-config.php에서 가장 중요한 건 뭔가요?

DB 접속 정보, 보안 키(salt), 테이블 접두사입니다. 특히 DB 정보와 salt가 유출되면 사이트가 통째로 위험합니다.

WP_DEBUG는 켜두면 안 되나요?

개발 중엔 켜서 오류를 보되 운영 중엔 꺼야 합니다. 오류 메시지에 경로·정보가 노출될 수 있습니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다