워드프레스 wp-config.php 파일: 역할과 안전한 수정 방법
wp-config.php에는 워드프레스의 데이터베이스 로그인, 보안 키, 사이트 설정이 들어 있습니다. 파일 위치, 각 부분의 역할, 안전하게 수정하는 방법을 설명합니다.
wp-config.php는 워드프레스에 데이터베이스 연결 방법과 실행 방식을 알려 주는 파일입니다. 보통 설치 루트 폴더의 wp-admin, wp-content 옆에 있습니다. “That’s all, stop editing!”(“여기까지입니다. 편집을 멈추세요!”) 줄 위에서는 설정을 안전하게 추가하거나 바꿀 수 있고, 그 줄 아래의 코드 두 블록은 그대로 두어야 합니다. 오타 하나로 사이트 전체가 멈출 수 있으니 먼저 백업하세요.
핵심 요약
- 이 파일에는 데이터베이스 비밀번호와 보안 키가 들어 있으므로 비밀번호처럼 다루고, 내용을 포럼이나 지원 채팅에 절대 올리지 마세요.
- 사용자 지정 설정은 “stop editing” 줄 위에 넣습니다. 그 아래의 마지막 줄이 워드프레스를 불러오므로, 그 뒤의 설정은 너무 늦습니다.
- 워드프레스 다운로드에는
wp-config-sample.php가 들어 있습니다. 실제wp-config.php는 설치 중에 만들어집니다.- 운영 중인 사이트에서 그 줄만 수정해
$table_prefix를 바꾸지 마세요. 워드프레스가 설치되지 않은 것처럼 동작합니다.
wp-config.php 위치 찾기
SFTP로 접속하거나 호스팅의 파일 관리자를 연 다음, wp-admin, wp-includes, wp-content가 있는 폴더로 이동하세요. 워드프레스 문서는 이곳을 워드프레스 파일 디렉터리의 루트라고 부릅니다.
그곳에 없으면 한 단계 위 폴더를 확인하세요. 워드프레스 로더는 설치 폴더를 먼저 확인한 다음 상위 폴더를 확인합니다. 상위 폴더에 자체 wp-settings.php가 있으면 건너뛰는데, 그곳에 다른 워드프레스가 설치되어 있다는 뜻이기 때문입니다.
두 곳 모두에 파일이 없으면 워드프레스는 방문자를 설치 화면으로 보냅니다. 이 화면은 wp-config-sample.php로 파일을 만듭니다. 폴더에 쓸 수 없으면 새 파일에 직접 붙여넣을 텍스트를 보여 줍니다.
기본 섹션별 역할
wp-config-sample.php가 템플릿이며, 다음 부분이 이 순서로 들어 있습니다.
| 섹션 | 담긴 내용 | 변경할 수 있나요? |
|---|---|---|
DB_NAME, DB_USER, DB_PASSWORD, DB_HOST | 데이터베이스 로그인. 샘플은 호스트로 localhost를 사용하며, 실제 값은 호스팅 업체에서 받을 수 있습니다. | 네, 데이터베이스 정보가 바뀔 때 변경합니다. 값이 틀리면 데이터베이스 연결 설정 오류가 발생합니다. |
DB_CHARSET, DB_COLLATE | 데이터베이스 텍스트 저장 방식. 기본값은 utf8mb4와 빈 값입니다. | 샘플의 DB_COLLATE 주석에는 확실하지 않으면 변경하지 말라고 적혀 있습니다. |
AUTH_KEY부터 NONCE_SALT까지 | 로그인 쿠키에 쓰이는 보안 키와 솔트 8개. | 네. 변경하면 모든 사용자가 로그아웃됩니다. |
$table_prefix | 각 데이터베이스 테이블 이름 앞에 붙는 텍스트. 기본값은 wp_입니다. | 설치할 때만 변경합니다. 테이블 이름을 바꾸고 이름에 이 접두사가 들어간 데이터베이스 저장 항목도 함께 수정한다면 예외입니다. |
WP_DEBUG | 디버그 모드. 샘플에서는 false로 설정되어 있습니다. | 네. 디버그 로그 위치 가이드에서 오류를 파일로 보내는 방법을 설명합니다. |
| ”custom values”(“사용자 지정 값”) 주석 | 직접 넣을 설정을 위한 빈 공간으로, “stop editing” 줄에서 끝납니다. | 네, 추가하는 내용은 여기에 넣습니다. |
ABSPATH와 wp-settings.php 줄 | 워드프레스 경로와 나머지를 불러오는 줄. | 아니요. 그대로 두세요. |
새 키는 클릭 한 번이면 받을 수 있습니다. WordPress.org 비밀 키 서비스는 불러올 때마다 새 세트를 제공합니다. 8줄 전체를 새 세트로 바꾸세요.
오래된 파일에는 “custom values” 주석이 없고 “Happy publishing” 대신 “Happy blogging”이라고 적혀 있을 수 있습니다. 둘 다 정상 작동하며 규칙은 같습니다. 설정은 그 줄 위에 추가하세요.
자주 변경하는 설정
모두 한 줄이면 됩니다. 모두 wp-config.php 문서에 나오는 설정이며, 기본값은 워드프레스의 default-constants.php에서 가져왔습니다.
// Memory for the front end, then for wp-admin
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
// Keep at most 3 revisions per post (false turns revisions off)
define( 'WP_POST_REVISIONS', 3 );
// Autosave every 180 seconds
define( 'AUTOSAVE_INTERVAL', 180 );
// Empty the trash after 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
// Remove the theme and plugin file editor from wp-admin
define( 'DISALLOW_FILE_EDIT', true );
// Force HTTPS for logins and wp-admin
define( 'FORCE_SSL_ADMIN', true );
// Set the site addresses here
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
필요한 줄만 복사하세요. 몇 가지는 알아 두면 좋은 내용이 있습니다.
- 메모리: 워드프레스 기본값은 40M(멀티사이트는 64M)이고, wp-admin은 PHP가 이미 더 많이 허용하지 않는 한 256M입니다. 호스팅에서 제한 변경을 허용하지 않으면 워드프레스는 PHP에 이미 설정된 제한을 사용합니다. 이럴 때의 대처법은 메모리 부족 가이드에서 다룹니다.
- 리비전: 기본적으로 켜져 있습니다.
false로 끄거나 숫자로 개수를 제한하세요. - 자동 저장과 휴지통: 기본값은 60초와 30일입니다.
EMPTY_TRASH_DAYS를0으로 설정하면 휴지통이 꺼지며, 문서는 이 경우 누군가 “Delete Permanently”(“영구 삭제”)를 클릭해도 워드프레스가 확인을 요청하지 않는다고 경고합니다. - 파일 편집기: 보안 강화 가이드에 따르면 이 설정이 공격자의 악성 파일 업로드를 막지는 못하지만, 일부 공격은 막을 수 있습니다.
DISALLOW_FILE_MODS는 더 나아가 플러그인과 테마의 설치 및 업데이트도 차단합니다. - HTTPS: “워드프레스 주소” 설정이 이미
https로 시작하면 워드프레스가FORCE_SSL_ADMIN을 자동으로true로 설정합니다. 이 줄은 주소가https로 시작하지 않을 때만 무언가를 바꿉니다. - 사이트 주소: 저장된 값을 덮어쓰지만 데이터베이스에 저장된 내용은 바꾸지 않습니다.
https://부분을 포함하세요.
한 가지 설정은 미리 준비가 더 필요합니다. define( 'DISABLE_WP_CRON', true );는 페이지 방문이 예약 작업을 시작하지 못하게 합니다. 켜기 전에 wp-cron.php용 서버 크론 작업을 설정하세요. 그렇지 않으면 예약 글과 다른 시간 지정 작업이 실행되지 않습니다.
wp-config.php를 안전하게 수정하는 방법
- 먼저 사본을 내려받으세요. 본인 컴퓨터에 보관합니다. 서버에
wp-config.php.bak같은 이름으로 남겨 둔 사본은 서버가 더 이상 PHP로 처리하지 않으므로 브라우저에서 읽힐 수 있습니다. - 일반 텍스트 편집기로 파일을 여세요. 워드프레스 편집 가이드는 Notepad++, Sublime Text, Visual Studio Code를 적합한 도구로 꼽고, Google Docs와 Microsoft Word는 피하라고 경고합니다. 워드 프로세서는 따옴표를 바꾸고 파일을 망가뜨리는 코드를 추가할 수 있기 때문입니다.
- “stop editing” 줄을 찾아 바로 위에 새 줄을 넣으세요. 그 설정이 위쪽에 이미 정의되어 있으면 그 줄을 변경합니다.
- 저장하고 업로드한 다음 사이트를 여세요. 브라우저의 비공개 창에서 wp-admin 페이지도 하나 함께 확인합니다.
- 문제가 생기면 사본을 되돌려 놓으세요. wp-admin이 열리지 않아도 이렇게 하면 수정이 취소됩니다.
파일을 웹 루트 위로 옮기기
보안 강화 가이드에 따르면 wp-config.php는 워드프레스 설치 위치보다 한 단계 위 폴더에 둘 수 있으며, 로더 코드가 추가 설정 없이 이를 처리합니다. 파일을 옮긴 뒤 사이트가 여전히 열리는지 확인하세요. 이 방법에는 두 가지 제한이 있습니다.
- 상위 폴더에 다른 워드프레스 설치가 있으면 안 됩니다. 로더는 자체
wp-settings.php가 있는 상위 폴더를 무시합니다. - 한 단계 위가 비공개인 것은 워드프레스가 웹 루트에 있을 때뿐입니다. 워드프레스가
/blog/같은 하위 폴더에 있으면 한 단계 위는 보통 여전히 공개 영역입니다.
같은 가이드는 이렇게 옮겨도 보안 이점이 미미하다고 주장하는 사람들이 있으며, 부주의하게 하면 심각한 취약점이 생길 수 있다고 말합니다. 그러니 선택 사항으로 생각하세요. 아파치의 경우 가이드는 .htaccess 파일 맨 위에 넣을 다음 블록도 제공합니다. 이 파일에 대한 직접 요청을 거부합니다.
<Files "wp-config.php">
Require all denied
</Files>
.htaccess 보안 가이드에서 이 규칙을 다른 규칙과 함께 다룹니다.
wp-config.php 파일 권한
워드프레스 문서는 상황에 따라 조금씩 다른 숫자를 제시합니다.
- 보안 강화 가이드는 본인과 웹 서버만 파일을 읽을 수 있어야 한다고 하며, 이는 일반적으로 400 또는 440을 뜻한다고 설명합니다.
- 파일 권한 가이드는 suexec를 쓰는 공유 호스팅에서 같은 서버의 다른 사용자가 읽지 못하도록 440 또는 400을 제시합니다. 보안 설정 예시로 600도 보여 줍니다.
- 일반 워드프레스 파일에 대해서는 같은 가이드가 644 또는 640을 제시합니다.
어떤 숫자가 작동할지는 웹 서버가 어떤 시스템 사용자로 실행되는지에 달려 있습니다. 웹 서버는 파일을 읽을 수 있어야 하므로, 변경 후 사이트가 열리지 않으면 이전 값으로 되돌리고 호스팅 업체에 어떤 값이 맞는지 문의하세요.
흔한 실수
wp-settings.php줄 뒤에 설정을 붙여넣기. 그 줄이 워드프레스를 불러오고 기본값을 설정합니다. PHP 상수는 스크립트 실행 중에 바뀔 수 없으므로 그 줄은 효과가 없습니다.- 같은 설정을 두 번 정의하기. 첫 번째 줄이 값을 정하고 두 번째 줄은 그 값을 바꿀 수 없습니다. PHP 매뉴얼에 따르면 상수 재선언은 PHP 8.5부터 사용 중단(deprecated)되었으므로 메시지가 나타날 수도 있습니다. 추가하기 전에 파일에서 이름을 검색하세요.
- true나 false를 따옴표로 감싸기.
'false'는 비어 있지 않은 문자열이고, PHP는 이를 true로 처리합니다.false는 따옴표 없이 쓰세요.'256M'같은 크기에는 따옴표가 필요합니다. - 워드 프로세서나 웹페이지에서 온 둥근 따옴표. PHP에는 곧은 따옴표가 필요하므로, 둥근 따옴표는 사이트가 열리지 않는 오류를 일으킵니다.
- 운영 중인 사이트에 디버그 오류 표시하기.
WP_DEBUG_DISPLAY의 기본값은true이므로,WP_DEBUG만 켜면 오류가 페이지에 나타나 방문자에게 보입니다. 디버그 로그 위치 가이드에서 파일로 보내는 방법을 확인하세요. WP_ALLOW_REPAIR를 켠 채로 두기. 문서에는 필요할 때만 켜고 문제가 해결되면 끄라고 나와 있습니다.
자주 묻는 질문
워드프레스의 wp-config.php는 무엇인가요?
워드프레스가 시작할 때 불러오는 설정 파일입니다. 데이터베이스 로그인, 보안 키, 테이블 접두사가 들어 있으며, WP_DEBUG나 WP_MEMORY_LIMIT 같은 설정도 여기에 추가합니다.
wp-config.php 파일은 어디에 있나요?
보통 워드프레스 설치의 루트 폴더, 즉 wp-admin, wp-includes, wp-content가 함께 있는 폴더에 있습니다. 워드프레스는 설치 위치보다 한 단계 위 폴더에 있는 파일도 인식합니다. 단, 그 폴더에 wp-settings.php가 없어야 합니다.
wp-config.php의 어디에 코드를 추가하나요? That’s all, stop editing! Happy publishing.(“여기까지입니다. 편집을 멈추세요! 즐거운 게시 되세요”) 줄 위에 추가합니다. 오래된 파일에는 Happy blogging이라고 적혀 있습니다. 그 아래의 마지막 줄이 워드프레스를 불러오므로, 그 줄 뒤에 넣은 설정은 너무 늦습니다.
wp-config.php를 수정해도 안전한가요? 네, 백업을 해 두고 일반 텍스트 편집기를 사용하면 안전합니다. 오타 하나로 wp-admin을 포함한 사이트 전체가 열리지 않을 수 있으니 먼저 사본을 내려받으세요. 수정 후 사이트가 고장 나면 사본을 되돌려 놓으세요.
wp-config.php를 삭제하면 어떻게 되나요? 워드프레스가 데이터베이스 로그인을 찾지 못해 설치 과정을 시작하고, 설정 파일을 만들라는 안내를 표시합니다. 콘텐츠는 데이터베이스에 그대로 있으므로, 백업을 복원하거나 같은 정보로 파일을 다시 만들면 사이트가 다시 연결됩니다.
wp-config.php의 권한은 어떻게 설정해야 하나요? 워드프레스 보안 강화 가이드에는 본인과 웹 서버만 읽을 수 있어야 한다고 나와 있으며, 이는 일반적으로 400 또는 440을 뜻합니다. 파일 권한 가이드에는 600도 나옵니다. 웹 서버는 파일을 읽을 수 있어야 하므로, 사이트가 열리지 않으면 호스팅 업체에 확인하세요.
출처
- WordPress Advanced Administration: wp-config.php, Hardening WordPress, File permissions, Editing files
- 워드프레스 소스 코드: wp-config-sample.php, wp-load.php, default-constants.php, setup-config.php, cron.php
- PHP 매뉴얼: Constants, Booleans
필요한 설정을 직접 입력하지 않고 새 보안 키까지 포함해 만들려면 무료 wp-config.php 생성기를 사용하세요.
FAQ
질문
워드프레스의 wp-config.php는 무엇인가요?
워드프레스가 시작할 때 불러오는 설정 파일입니다. 데이터베이스 로그인, 보안 키, 테이블 접두사가 들어 있으며, WP_DEBUG나 WP_MEMORY_LIMIT 같은 설정도 여기에 추가합니다.
wp-config.php 파일은 어디에 있나요?
보통 워드프레스 설치의 루트 폴더, 즉 wp-admin, wp-includes, wp-content가 함께 있는 폴더에 있습니다. 워드프레스는 설치 위치보다 한 단계 위 폴더에 있는 파일도 인식합니다. 단, 그 폴더에 wp-settings.php가 없어야 합니다.
wp-config.php의 어디에 코드를 추가하나요?
That's all, stop editing! Happy publishing.("여기까지입니다. 편집을 멈추세요! 즐거운 게시 되세요") 줄 위에 추가합니다. 오래된 파일에는 Happy blogging이라고 적혀 있습니다. 그 아래의 마지막 줄이 워드프레스를 불러오므로, 그 줄 뒤에 넣은 설정은 너무 늦습니다.
wp-config.php를 수정해도 안전한가요?
네, 백업을 해 두고 일반 텍스트 편집기를 사용하면 안전합니다. 오타 하나로 wp-admin을 포함한 사이트 전체가 열리지 않을 수 있으니 먼저 사본을 내려받으세요. 수정 후 사이트가 고장 나면 사본을 되돌려 놓으세요.
wp-config.php를 삭제하면 어떻게 되나요?
워드프레스가 데이터베이스 로그인을 찾지 못해 설치 과정을 시작하고, 설정 파일을 만들라는 안내를 표시합니다. 콘텐츠는 데이터베이스에 그대로 있으므로, 백업을 복원하거나 같은 정보로 파일을 다시 만들면 사이트가 다시 연결됩니다.
wp-config.php의 권한은 어떻게 설정해야 하나요?
워드프레스 보안 강화 가이드에는 본인과 웹 서버만 읽을 수 있어야 한다고 나와 있으며, 이는 일반적으로 400 또는 440을 뜻합니다. 파일 권한 가이드에는 600도 나옵니다. 웹 서버는 파일을 읽을 수 있어야 하므로, 사이트가 열리지 않으면 호스팅 업체에 확인하세요.