워드프레스 사이트 이전 시 발생하는 대표적인 오류와 해결 가이드
워드프레스 사이트를 다른 서버나 도메인으로 이전할 때는 작은 설정 하나가 전체 사이트에 큰 영향을 줄 수 있습니다. 이 글에서는 이전 과정에서 자주 발생하는 오류 유형을 정리하고, 원인 진단 방법과 실제로 시도해볼 수 있는 해결책을 설명합니다. 실무에서 바로 활용할 수 있는 체크포인트도 포함되어 있으니 이전 전후 점검에 활용하세요.
1. 데이터베이스 연결 오류 (Error establishing a database connection)
증상: 사이트 접속 시 흰 화면 또는 “Error establishing a database connection” 메시지.
원인
- wp-config.php의 DB_NAME, DB_USER, DB_PASSWORD, DB_HOST 정보 불일치
- 데이터베이스 서버(예: MySQL)가 다운되었거나 호스트명이 변경됨
- 데이터베이스 사용자 권한 부족
해결 방법
- wp-config.php의 DB 정보가 새 서버 환경과 일치하는지 확인합니다.
- 데이터베이스 접속을 직접 시도해 확인합니다 (phpMyAdmin, MySQL 클라이언트 등).
- 사용자 권한을 확인하고 필요한 권한(SELECT, INSERT, UPDATE, DELETE 등)을 부여합니다.
- 서버 호스팅 환경에서는 DB 호스트명이 ‘localhost’가 아닐 수 있으므로 호스트 정보를 물어보세요.
2. 이미지 및 업로드 파일이 보이지 않거나 깨지는 문제
원인
- wp-content/uploads 경로가 이전되지 않음
- 파일 소유권/퍼미션 문제로 웹서버가 파일에 접근 불가
- URL이 이전 도메인으로 고정되어 있어 경로가 잘못됨
해결 방법
- uploads 폴더(및 하위 파일)를 새 서버로 완전 복사했는지 확인합니다.
- 파일 퍼미션 및 소유자(chown/chmod)를 웹서버 사용자 기준으로 설정합니다.
- DB 또는 테마/플러그인 설정에 남아 있는 이전 도메인 URL을 현재 도메인으로 교체합니다. (직접 SQL 교체 시 직렬화(serialized) 데이터를 깨뜨리지 않도록 주의)
- 안전한 교체 방법으로는 WP-CLI의 search-replace(직렬화 처리 포함) 또는 신뢰할 수 있는 마이그레이션 플러그인을 사용하세요.
3. 404 에러 / 퍼머링크(링크 구조) 문제
원인
- .htaccess 파일이 없거나 이전되지 않음
- 서버의 리라이트 모듈(Apache mod_rewrite, Nginx 설정 등) 미설정
- 워드프레스의 퍼머링크 설정 재저장 필요
해결 방법
- 관리자 > 설정 > 고정링크에서 ‘저장’을 눌러 .htaccess를 재생성합니다. (파일 쓰기 권한 필요)
- Apache를 사용하는 경우 .htaccess 파일의 RewriteBase/RewriteRule이 정확한지 확인합니다. Nginx면 서버 블록에 적절한 rewrite 규칙이 있는지 확인하세요.
4. mixed content (HTTP/HTTPS 혼합) 문제
원인
- 사이트를 HTTPS로 이전했지만 내부 링크나 이미지가 여전히 HTTP로 로드됨
해결 방법
- 사이트 주소(URL)를 HTTPS로 설정했는지 확인합니다 (관리자 > 설정 > 일반).
- DB에서 http:// 도메인을 https://로 교체합니다. 직렬화 문제에 주의하세요.
- 가능하면 HSTS 설정 및 리다이렉트(HTTP -> HTTPS)를 서버에서 처리하세요.
- 브라우저 개발자 도구의 콘솔에서 ‘Mixed Content’ 경고를 확인해 어떤 리소스가 HTTP로 호출되는지 파악합니다.
5. 플러그인·테마 호환성 및 PHP 버전 문제
원인
- 새 서버의 PHP 버전이나 확장 모듈이 이전 서버와 달라서 특정 플러그인/테마가 오류를 냄
- 활성화된 플러그인 중 일부가 새 환경에서 충돌
해결 방법
- 서버의 PHP 버전을 워드프레스 및 사용중인 플러그인/테마 요구사항에 맞추세요.
- 에러 로그(php error log, 서버 로그)를 확인해 어떤 플러그인에서 에러가 나는지 파악합니다.
- 문제가 의심되는 플러그인을 비활성화해 원인 분리 후 대체 플러그인 또는 업데이트를 적용합니다.
6. 직렬화(serialized) 데이터 문제
원인
- 도메인 또는 경로를 문자열 단위로 DB에서 치환하면 직렬화된 배열 길이 정보가 맞지 않아 데이터가 깨짐
해결 방법
직렬화 데이터를 안전하게 변경하려면 WP-CLI의 search-replace 명령이나 직렬화 처리를 지원하는 마이그레이션 도구를 사용하세요. 예:
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --all-tables
명령 실행 전엔 반드시 전체 백업을 만들어 두세요.
7. 캐시/세션/크론 관련 문제
증상
- 이전 후 업데이트가 반영되지 않거나 예약 작업(cron)이 실행되지 않음
해결 방법
- 서버 캐시(프록시, CDN, 플러그인)를 비우고 브라우저 캐시도 확인합니다.
- WP-Cron이 차단되는 경우 실제 시스템 크론으로 대체 설정을 고려하세요.
- CDN을 사용하는 경우 새 도메인/경로가 캐시에 반영되었는지 확인합니다.
점검 체크포인트 (이전 전/후 필수 확인 목록)
- 전체 파일 및 데이터베이스 백업 완료
- wp-config.php의 DB 정보 및 인증키(SECRET_KEY) 확인
- uploads 및 wp-content 전체 파일 복사 여부 확인
- 퍼머링크 저장으로 .htaccess 재생성
- HTTPS 설정 및 mixed content 점검
- PHP 버전과 확장(예: mbstring, gd, mysqli 등) 확인
- 플러그인/테마 호환성 확인 및 필요한 경우 디버그 모드로 오류 로그 확인
- 권한/소유권(chown/chmod) 점검
- DNS 전파, SSL 유효성, CDN 캐시 반영 여부 확인
자주 묻는 질문 (FAQ)
Q1. 이전 후 하얀 화면(WSOD)이 뜹니다. 어떻게 해야 하나요?
A1. PHP 오류로 인해 화면이 흰색으로 나올 수 있습니다. wp-config.php에서 WP_DEBUG를 true로 설정해 에러를 확인하거나(프로덕션에서는 주의), 서버 에러 로그를 확인하세요. 문제가 되는 플러그인/테마를 비활성화해 원인을 좁히는 것도 좋은 방법입니다. 변경 전 전체 백업을 반드시 만들어 두세요.
Q2. 도메인을 바꿨는데 관리자 페이지만 접속이 됩니다. 프론트엔드가 404가 나옵니다. 왜 그런가요?
A2. 보통 퍼머링크(리라이트) 설정이나 .htaccess/Nginx rewrite 설정 문제가 원인입니다. 관리자 > 설정 > 고정링크에서 ‘저장’을 눌러 퍼머링크 규칙을 재생성하고, 웹서버의 리라이트 모듈과 설정을 확인하세요.
Q3. DB에서 도메인 일괄 변경하는 안전한 방법은?
A3. 직렬화(serialized) 데이터를 손상시키지 않으려면 WP-CLI의 search-replace를 사용하거나 직렬화 교체를 지원하는 플러그인(예: Better Search Replace) 또는 신뢰할 수 있는 마이그레이션 도구를 사용하세요. 수동 SQL REPLACE는 직렬화 데이터에서 오류를 일으킬 수 있어 주의가 필요합니다. 변경 전 전체 DB 백업을 반드시 수행하세요.
마무리
워드프레스 이전은 준비와 점검이 핵심입니다. 이전 전 충분한 백업과 테스트 환경에서의 시뮬레이션, 이전 후 로그/콘솔/퍼포먼스 점검을 통해 대부분의 문제를 예방하거나 신속히 해결할 수 있습니다. 문제가 복잡하거나 로그로 원인을 파악하기 어려운 경우 호스팅사나 워드프레스 전문 엔지니어에게 도움을 요청하는 것이 안전합니다.
답글 남기기