wp-config.php 기본 설정: 파일 & 메모리·리비전 SSH, SFTP, cPanel 세팅 가이드

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

wp-config.php 파일은 워드프레스 웹 사이트의 가장 중요한 설정 파일입니다. 이 파일은 워드프레스가 데이터베이스에 접속하고 작동하는 데 필요한 핵심 정보를 담고 있기 때문에, 사이트의 심장부와 같은 역할을 합니다.

Ⅰ. wp-config.php의 역할

이 파일에는 다음과 같은 민감한 설정이 포함되어 있습니다.

  • 데이터베이스 연결 정보
  • ↳ MySQL 또는 MariaDB의 이름, 사용자 이름, 비밀번호, 호스트 정보 등 워드프레스 콘텐츠를 저장하는 데이터베이스에 접속하기 위한 필수 정보가 들어 있습니다.
  • 보안 키와 솔트
  • ↳ 사용자의 로그인 세션과 쿠키를 암호화하여 보안을 강화하는 데 사용되는 고유하고 무작위적인 문자열입니다. 이 키가 없으면 세션이 안전하게 유지될 수 없습니다.
  • 기타 핵심 설정
  • ↳ 테이블 접두사, 디버그 모드 활성화/비활성화, 파일 편집 비활성화 등 워드프레스의 작동 방식을 제어하는 중요한 상수가 정의되어 있습니다.
워드프레스 wp-config.php 파일

이러한 특성 때문에 wp-config.php 파일은 외부 공격자에게 최우선 공격 대상이 됩니다. 파일에 대한 접근 권한이 잘못 설정되거나 내용이 노출될 경우, 데이터베이스 전체가 유출되거나 사이트의 관리 권한을 빼앗길 수 있는 심각한 보안 취약점으로 이어집니다. 따라서 워드프레스 보안을 강화하는 첫걸음은 이 파일의 안전을 확보하는 것입니다.

1️⃣ wp-config.php 파일 위치

wp-config.php는 워드프레스를 설치한 최상위 폴더에 있으며, [wp-admin]·[wp-content]·[wp-includes] 폴더와 같은 자리에 위치합니다. cPanel 호스팅은 [public_html] 폴더가 그 자리이고, 이 사이트는 라이트세일 VPS의 [/home/uknew/www/wp-config.php]에 두고 있습니다.

최상위 폴더에서 파일이 보이지 않으면 한 단계 위 폴더를 확인합니다. 워드프레스는 wp-config.php를 설치 폴더에서 먼저 찾고, 없으면 바로 위 폴더에서 찾아 불러오게 됩니다.

2️⃣ wp-config.php 여는 법

호스팅 관리 패널의 [파일 관리자]에서 최상위 폴더로 이동한 뒤, wp-config.php를 마우스 오른쪽 버튼으로 눌러 [Edit]를 선택합니다. 별도 프로그램 없이 브라우저에서 바로 수정할 수 있는 방법입니다.

FTP 프로그램(FileZilla)으로 접속하면 파일을 내 컴퓨터로 내려받아 편집기로 수정한 뒤 다시 업로드하게 됩니다. 업로드 전에 원본을 한 부 따로 저장해 두면 오류가 났을 때 바로 되돌릴 수 있습니다.

​VPS처럼 SSH로 접속하는 서버는 [vi] 편집기 이름 뒤에 파일 경로를 붙여 실행하며, [nano]도 같은 방식으로 열 수 있습니다.

vi /home/uknew/www/wp-config.php

3️⃣ wp-config-sample.php와 기본 구조

새로 받은 워드프레스 압축 파일에는 wp-config.php가 없고, 같은 자리에 [wp-config-sample.php]만 들어 있습니다. 설치 화면에서 데이터베이스 정보를 입력하면 워드프레스가 이 파일을 바탕으로 wp-config.php를 생성하며, 직접 복사해 이름을 바꿔도 같은 결과가 나옵니다.

define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

$table_prefix = 'wp_';

define( 'WP_DEBUG', false );

[DB_NAME]·[DB_USER]·[DB_PASSWORD]·[DB_HOST] 네 줄에는 호스팅에서 받은 데이터베이스 정보를 넣습니다. 값이 하나라도 틀리면 사이트 대신 [Error establishing a database connection] 오류가 표시됩니다.

[AUTH_KEY]부터 [NONCE_SALT]까지 여덟 줄은 로그인 쿠키를 암호화하는 값이며, [https://api.wordpress.org/secret-key/1.1/salt/]에서 새로 받아 통째로 교체합니다. 값을 바꾸면 로그인해 있던 모든 사용자가 로그아웃됩니다.

[$table_prefix]는 데이터베이스 테이블 이름 앞에 붙는 접두어로 기본값은 [wp_]이며, 한 데이터베이스에 워드프레스를 여러 개 설치할 때 서로 구분하는 역할을 합니다. [WP_DEBUG]를 [true]로 바꾸면 PHP 오류가 화면에 표시되므로, 운영 중인 사이트는 [false]로 둡니다.

Ⅱ. 워드프레스 설치 후 적용하는 wp-config.php 기본 설정

설정 줄은 모두 /* That’s all, stop editing! Happy publishing. */ 주석 위에 넣습니다. 아래 시뮬레이터에서 SSH·cPanel·FTP 중 접속 방법을 고르고 wp-config.php를 열면, 왼쪽에서 누른 설정의 줄로 바로 이동합니다.

⚙️ wp-config.php 설정설정 시뮬레이터
/* That’s all, stop editing! Happy publishing. */
이 주석(/* That’s all, stop editing! Happy publishing. */)은 기술적으로 PHP 코드로서 특별한 기능을 수행하는 것은 아닙니다. 단순히 주석​일 뿐입니다.
user_a@server: ~
Last login: Mon Oct 5 14:10:02 2026 from 10.0.0.12
[user_a@server ~]$
하지만 워드프레스 개발팀이 사용자들에게 “이 주석 아래에는 워드프레스가 작동하는 데 필요한 핵심 코드가 있으니 건드리지 말라”는 의미로 남겨둔 ‘표식‘ ​역할을 합니다.
  1. 설정 상수(define)는 위에: 워드프레스 설정에 관련된 대부분의 상수(define​)들은 /* That’s all, stop editing! Happy publishing. */ 주석 바로 위에 정의되어야 워드프레스가 설정을 초기화하는 과정에서 정상적으로 로드됩니다.
  2. 워드프레스 로딩 시작은 아래에: 이 주석 아래에는 [ABSPATH] ​정의와 [require_once( ABSPATH . ‘wp-settings.php’ );]라는 코드가 있습니다. 이 [wp-settings.php] 파일을 로드하는 순간부터 워드프레스의 핵심 기능들이 실제로 구동되기 시작합니다.
​따라서 사용자가 추가적인 설정 (예: 파일 편집 비활성화 [define(‘DISALLOW_FILE_EDIT’, true);]나 메모리 제한 설정 [define(‘WP_MEMORY_LIMIT’, ‘256M’);] 등)을 하려면, 워드프레스의 핵심 로딩 파일이 호출되기 ​이전​, 즉 주석 바로 위에 작성해야 오류 없이 적용됩니다.
wp-config-sample.php에는 [stop editing] 주석 바로 위에 [Add any custom values between this line and the “stop editing” line.] 주석이 한 줄 더 있으며, 직접 추가하는 설정은 이 두 주석 사이에 넣습니다.
워드프레스 메모리 설정
워드프레스 튜토리얼이나 공식 문서에서는 [define(‘WP_MEMORY_LIMIT’, ‘256M’);] ​하나만 나오는 경우가 대부분입니다.
메모리 설정은 워드프레스가 PHP에서 사용할 수 있는 메모리의 최대치를 지정해, 테마나 플러그인 실행 중 메모리 부족 오류(Fatal error: Allowed memory size exhausted)를 방지하기 위함입니다. 즉, 안정적인 사이트 구동과 리소스 초과 방지를 위한 기본적인 안전 장치입니다.
‘WP_MAX_MEMORY_LIMIT’는 프론트엔드보다 백엔드에 더 많은 메모리를 허용하는 구조입니다.
WP_MEMORY_LIMIT는 “사이트 방문자용 메모리 한도”이고,
WP_MAX_MEMORY_LIMIT는 “관리자·내부 처리용 확장 한도”입니다.
두 개를 함께 설정해야 완전한 워드프레스 메모리 제어​가 가능합니다.
서버에 설정 된 php.ini 또는 PHP-FPM pool 설정보다 wp-config.php 값이 더 클 경우 서버 설정을 따르게 되어 있습니다.
Revisions 제한
리비전 개수를 정하려고 플러그인을 따로 설치할 필요는 없습니다. 아래 상수 한 줄을 wp-config.php에 넣으면 같은 결과가 나오며, 나중에 지워야 할 플러그인 설정도 데이터베이스에 남지 않습니다.
워드프레스 리비전은 게시물의 수정 하기 전 데이터가 계속해서 쌓이기 때문에 웹사이트가 느려집니다. 특히 캐시가 설치되지 않은 워드프레스 사이트의 경우와 캐시가 설치되어 있어도 관리자 페이지 대시보드에서 작업을 하는 동안, 특히 글이나 페이지에서 콘텐츠를 제작하는 경우 방문자 페이지까지 느려지는 경우가 있습니다.
예를 들어 서버의 총 CPU를 50% 정도 사용하는 경우 어떤 캐시 플러그인을 쓰더라도 방문자 페이지의 속도가 떨어질 수 있습니다.
때문에 리비전을 비활성화 하거나 갯수 제한을 적용합니다.
WP Rocket이나 Perfmatters를 쓰고 있다면 설정 화면에서도 다룰 수 있습니다. WP Rocket은 [Database] 탭의 [Revisions]로 이미 쌓인 리비전을 삭제하며, 개수를 제한하는 설정은 없습니다.
WP Rocket 데이터베이스 리비전 정리 화면
Perfmatters는 [Limit Post Revisions]에서 글마다 남길 리비전 개수를, [Autosave Interval]에서 자동 저장 간격을 정합니다.
Perfmatters 리비전 제한 설정
글 자동 저장 간격 조정
워드프레스 글 자동 저장 간격은 기본 1분입니다. 예를 들어 기본 60초 → 5분(300초)으로 늘릴 수 있습니다.
Heartbeat 설정
Heartbeat는 wp-config.php에 넣을 상수가 없어 이 파일로는 조절할 수 없습니다. 아래 코드를 wp-config.php에 넣으면 워드프레스가 [add_action] 함수를 불러오기 전에 실행되어, [Call to undefined function add_action()] 오류로 사이트가 멈추게 됩니다.
워드프레스 ‘Heartbeat’는 서버와 웹사이트가 계속 연결되어 있는지 확인하는 신호입니다. Heartbeat API는 
/wp-admin/admin-ajax.php를 사용하여 웹 브라우저에서 AJAX 호출을 실행합니다. 워드프레스 대시보드에서 15초마다 이 파일로 인해 POST 요청이 전송됩니다.
관리자 글쓰기 화면인 [post.php]·[post-new.php]에서는 동작하도록 설정할 수 있습니다.
WP Rocket을 사용한다면 [Heartbeat] 탭에서 관리자 화면·글 편집기·프런트엔드마다 [Do not limit]·[Reduce activity]·[Disable] 중 하나를 선택합니다.
WP Rocket Heartbeat 설정 화면
Perfmatters는 [Disable Heartbeat]에서 Heartbeat를 허용할 화면을, [Heartbeat Frequency]에서 요청 간격을 정합니다.
Perfmatters Heartbeat 설정
두 플러그인이 모두 없다면 Heartbeat 하나 때문에 플러그인을 추가로 설치하지 않습니다. 플러그인은 삭제한 뒤에도 설정 값이 데이터베이스에 남으므로, 아래 코드를 테마의 [functions.php]에 넣습니다.
/** Disable Heartbeat everywhere except post editor */
add_action('init', function() {
    global $pagenow;
    if ($pagenow != 'post.php' && $pagenow != 'post-new.php') {
        wp_deregister_script('heartbeat');
    }
}, 1);
글로벌 세팅
글로벌 세팅은 이 글의 설정을 모두 넣은 wp-config.php입니다.
메모리 두 줄, 리비전 3개 제한, 자동 저장 300초가 [stop editing] 주석 위에 차례로 들어 있습니다.
Heartbeat는 wp-config.php에 넣으면 오류가 나므로 글로벌 세팅에서 빠집니다.
화면 오른쪽 위 복사 아이콘을 누르면 넣을 줄만 복사됩니다.
브라우저 안에서만 동작하며 실제 파일은 변경하지 않습니다. 위에서 접속 방법을 고르고 칩을 차례로 눌러 wp-config.php를 열면, 왼쪽에서 누른 설정의 줄로 이동합니다. 칩 대신 터미널을 클릭해 명령어와 vi 키를 직접 입력할 수도 있습니다. 가상 서버에는 이 글에 필요한 파일만 들어 있으며, cPanel·FileZilla 화면은 실제 화면을 줄여 그린 것입니다.

🔢 FAQ & 추천 콘텐츠

방금 저장한 줄에 따옴표나 세미콜론이 빠지면 PHP가 wp-config.php를 끝까지 읽지 못해 사이트가 열리지 않습니다. 수정 전에 저장해 둔 원본으로 되돌린 뒤, 바꾼 줄만 다시 확인합니다.

wp-config.php 보안 글에서는 소유자만 읽고 쓸 수 있는 [600]을 권합니다. PHP가 파일 소유자와 다른 계정으로 실행되는 서버는 600이면 파일을 읽지 못하므로, 바꾼 뒤 사이트가 열리는지 바로 확인합니다.

WP Rocket은 켤 때 파일 맨 위에 [define( ‘WP_CACHE’, true ); // Added by WP Rocket] 한 줄을 넣으며, 이 사이트 wp-config.php에도 2행에 이 줄이 있습니다. 이 줄이 있어야 워드프레스가 캐시 파일 [advanced-cache.php]를 불러오게 됩니다.

같은 상수가 파일 위쪽에 이미 정의돼 있으면 PHP는 먼저 정의된 값을 그대로 사용하고, 아래 줄에는 [Constant WP_MEMORY_LIMIT already defined] 경고만 남깁니다. 호스팅이나 플러그인이 넣은 줄이 있는지 상수 이름으로 파일 전체를 검색합니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

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

인간임을 증명하세요: 9   +   6   =