* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
(워드프레스 해부 ③) 설정
워드프레스에서 파일 하나만 꼽으라면 나는 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_LIMIT | PHP 메모리 상한 |
| 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는 켜두면 안 되나요?
개발 중엔 켜서 오류를 보되 운영 중엔 꺼야 합니다. 오류 메시지에 경로·정보가 노출될 수 있습니다.

답글 남기기