인기 워드프레스 백업 플러그인 UpdraftPlus를 사용하여 백업을 시도할 때 PHP Fatal error (Error) has occurred. Error Message: Undefined constant "DB_HOST" 오류가 발생하면서 백업에 실패하는 현상을 경험했습니다. Undefined constant "DB_HOST" 오류는 DB_HOST가 정의되지 않은 경우에 발생합니다.
워드프레스: PHP Fatal error (Error) has occurred. Error Message: Undefined constant "DB_HOST" 에러
지난주 국내호스팅 중 하나인 나우호스팅의 특정 서버에 디도스 공격이 발생하여 서버가 변경되었습니다.
해당 서버에 호스팅 중인 사이트가 서버 변경 후에 UpdraftPlus를 사용하여 데이터베이스(DB) 백업을 시도하니 오류가 발생하는 문제가 발생했습니다.
UpdraftPlus 플러그인을 사용하여 데이터베이스(DB)와 파일을 백업할 수 있습니다.
UpdraftPlus는 무료 버전과 유료 버전이 있으며, 보통은 무료 버전으로 충분하지만 멀티사이트를 백업하는 경우에는 프리미엄 버전을 사용할 수 있습니다.
나우호스팅에서 서버 변경 후에 UpdraftPlus 플러그인을 사용하여 백업을 시도하니 에러가 발생했습니다.
An error condition has occurred for the first time during this job 로그 메시지가 표시되면서 로그 파일을 다운로드할 수 있는 링크가 표시되었습니다.
Download most recently modified log file을 다운로드하여 살펴보니 다음과 같은 로그를 확인할 수 있었습니다.
0000.000 (0) Opened log file at time: Sun, 23 Apr 2023 23:18:05 +0000 on https://www.example.co.kr
0000.001 (0) UpdraftPlus WordPress backup plugin (https://updraftplus.com): 1.23.3 WP: 6.2 PHP: 8.0.19RC1 (cgi-fcgi, Linux localhost.localdomain 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64) MySQL: 10.4.22-MariaDB (max packet size=33554432) WPLANG: ko_KR Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 PHP/5.4.45 safe_mode: 0 max_execution_time: 900 memory_limit: 512M (used: 57.1M | 60.5M) multisite: N openssl: OpenSSL 1.0.2k 26 Jan 2017 mcrypt: N LANG: ZipArchive::addFile: Y
0000.001 (0) Free space on disk containing Updraft's temporary directory: 2146525.7 MB
0000.002 (0) Tasks: Backup files: 0 (schedule: manual) Backup DB: 1 (schedule: manual)
0000.004 (0) Requesting semaphore lock (d) (apparently not via scheduler)
0000.004 (0) Semaphore (d, 10a_options) was stuck, set lock time to 2023-04-23 23:18:05
0000.005 (0) Semaphore (d, 10a_options) reset to 1
0000.005 (0) Set semaphore last lock (d) time to 2023-04-23 23:18:05
0000.006 (0) Semaphore lock (d) complete
0000.007 (0) Backup run: resumption=0, nonce=4fb732879f87, file_nonce=4fb732879f87 begun at=1682291885 (0s ago), job type=backup
0000.008 (0) Scheduling a resumption (1) after 300 seconds (1682292185) in case this run gets aborted
0000.017 (0) This backup run is not intended for files - skipping
0000.018 (0) Beginning creation of database dump (WordPress DB)
0000.018 (0) PHP Fatal error (Error) has occurred. Error Message: Undefined constant "DB_HOST" (Code: 0, line 1583 in /home/web/example.co.kr/public_html/wp-content/plugins/updraftplus/backup.php)
0000.019 (0) An error condition has occurred for the first time during this job
위에서 핵심적인 부분은 [**PHP Fatal error (Error) has occurred. Error Message: Undefined constant "DB_HOST"**]인 것 같습니다.
"DB_HOST"가 정의되지 않았다는 의미입니다.
[**/wp-content/plugins/updraftplus/backup.php**] 파일의 1583 라인을 체크해 보면 다음과 같습니다.
서버가 바뀌면서 DB_HOST가 변경되었을 수 있습니다. 혹은 어떤 이유로 [**wp-config.php**] 파일에서 DB_HOST 라인이 삭제되었을 수 있습니다.
저는 살펴보니 [**wp-config.php**] 파일에서 DB_HOST 라인이 누락되어 있었습니다. 그래서 다음 라인을 구성 파일에 추가했습니다.
/** Database hostname */
define( 'DB_HOST', 'localhost' );
카페24, 블루호스트, 클라우드웨이즈 등 대부분의 웹호스팅에서 DB_HOST는 localhost입니다.
위의 라인을 [**wp-config.php**] 파일에 추가하니 UpdraftPlus에서 디비를 에러 없이 백업했습니다. [**wp-config.php**] 파일을 수정하려면 FTP에 접속해야 합니다.
FTP 접속 방법을 모르는 경우 웹호스팅 업체에 연락하면 도움을 받을 수 있을 것입니다.
참고
https://avada.tistory.com/2982
https://avada.tistory.com/2974
https://avada.tistory.com/2986