워드프레스 PHP 오류 표시 비활성화는 운영 서버에서 반드시 지켜야 하는 기본 보안 설정입니다. 개발 중에는 오류 메시지가 문제를 찾는 데 도움이 되지만, 운영 서버에서는 오히려 위험합니다. PHP 오류 메시지에는 파일 경로(/var/www/html/wp-content/plugins/...), 함수명, 테이블명 같은 서버 내부 정보가 담겨 있습니다. 공격자는 이 정보를 모아서 더 정교한 공격을 설계합니다. 제가 인수인계받은 사이트 중 하나는 특정 플러그인 오류가 매일 수십 번씩 화면에 표시되고 있었고, 그 오류 메시지에는 절대적 파일 경로가 포함돼 있었습니다.
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);
wp-config.php에서 이 4줄을 설정합니다. 의미는 다음과 같습니다.
WP_DEBUG: 워드프레스 디버그 모드 전체 비활성화WP_DEBUG_LOG: debug.log 파일 생성 비활성화 (활성화 시 /wp-content/debug.log에 기록됨)WP_DEBUG_DISPLAY: 화면에 오류 표시 비활성화display_errors: PHP 레벨에서도 오류 표시 비활성화개발 환경에서는 WP_DEBUG를 true로 두되, WP_DEBUG_DISPLAY는 false, WP_DEBUG_LOG는 true로 설정해서 파일에만 기록하는 방식을 권장합니다.
php.ini에서도 오류 표시가 비활성화돼 있는지 확인합니다.
# php.ini 위치 확인
php --ini
# 설정 확인
grep "display_errors" /etc/php/8.x/fpm/php.ini
display_errors = Off 로 돼 있어야 합니다.
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
로그는 남기되(log_errors = On) 화면에는 표시하지 않는 설정입니다.
WP_DEBUG_LOG를 활성화했다면 debug.log 파일이 외부에서 접근 가능하지 않도록 차단해야 합니다.
location ~ /wp-content/debug\.log {
deny all;
return 403;
}
debug.log 파일에는 민감한 경로 정보와 오류 세부 내용이 담겨 있습니다. 관리자만 서버에서 직접 확인해야 합니다. 운영 서버에서 디버그 모드는 문제 해결이 끝나는 즉시 다시 끄는 것이 원칙입니다.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)