이 블로그에서 며칠 전부터 댓글을 작성하여 제출하면 치명적인 오류가 발생하는 문제가 있었습니다. Fatal Error가 발생해도 댓글은 정상적으로 등록되었기 때문에 저는 이 문제를 인식하지 못하고 있었습니다. 감사하게도 네이버 카페를 통해 한 회원님이 이 문제를 알려주셔서 문제를 수정했습니다.
이 문제는 특정 상황에서 클라우드웨이즈의 Breeze 캐시 플러그인을 사용할 때 발생합니다. 클라우드웨이즈에 연락하여 이 문제를 수정했습니다. 아마 Breeze 플러그인의 차기 업데이트에서 이 버그가 수정될 것으로 예상됩니다.
댓글 등록 시 치명적인 오류가 발생하는 문제
이 워드프레스 블로그에서 댓글을 제출하면 아래와 같은 "이 웹사이트에 치명적인 오류가 있습니다" 에러가 며칠 동안 발생했습니다.

네이버 카페를 통해 혀니님이 이 문제를 보고해 주셨습니다. 혀니님께 감사드립니다.😄
에러 로그를 살펴보니 다음과 같이 Breeze 플러그인의 purge_post_on_new_comment()라는 함수에서 이 문제가 발생했습니다.
PHP Fatal error: Uncaught TypeError: Breeze_PurgeCache::purge_post_on_new_comment():
Argument #2 ($approved) must be of type int, string given in
/home/website/public_html/wp-content/plugins/breeze/inc/cache/purge-cache.php on line 420
조금 더 살펴보니 관련 함수는 다음과 같이 정의되어 있었습니다.
public function purge_post_on_new_comment( int $comment_ID, int $approved, array $commentdata ) {
if ( empty( $approved ) ) {
return;
}
// File based caching only
if ( ! empty( Breeze_Options_Reader::get_option_value( 'breeze-active' ) ) ) {
$post_id = $commentdata['comment_post_ID'];
Breeze_CloudFlare_Helper::purge_cloudflare_cache_urls( array( get_permalink( $post_id ) ) );
$url_path = get_permalink( $post_id );
// Purge local cache for the URLs list.
$this->clear_local_cache_for_urls( array( $url_path ) );
$this->detect_comments_page_clear_cache();
$this->clear_op_cache_for_comments( $comment_ID );
}
}
문제가 되는 부분은 $approved의 반환값이 정수가 되어야 하지만 제 블로그에서는 모든 댓글을 휴지통으로 보내도록 설정되어 있어서 치명적인 오류를 격발하고 있었습니다.
기본적으로 comment_post 훅에서 $approved 값은 다음 중 하나가 될 수 있습니다:
- '0' → 승인되지 않음 (대기 중)
- '1' → 승인됨
- 'spam' → 스팸
- 'trash' → 휴지통으로 이동됨
- 'delete' → 삭제됨
저는 휴지통으로 자동으로 이동되도록 하였기 때문에 '0' 혹은 '1'과 같은 정수가 아니라 'trash'가 $approved 값으로 전달되면서 Uncaught TypeError가 발생했습니다.
이 문제를 클라우드웨이즈에 보고하니 곧바로 문제를 해결해주었습니다.😊 이제 이 블로그에서는 댓글을 제출해도 치명적인 오류가 발생하지 않을 것입니다.
Breeze 플러그인은 클라우드웨이즈에서 개발하여 유지하고 있으므로 클라우드웨이즈 사용자라면 이 플러그인에 대한 버그를 클라우드웨이즈에 라이브 채팅으로 보고할 수 있습니다. 이 문제를 보고하니 담당자가 Support Ticket을 발행해주었고, Breeze 플러그인 개발자가 20분만에 문제를 해결해주었습니다. (아마 밤 시간에 연락하여 시간대가 맞아서 빠르게 문제를 해결해 준 것이 아닌가 생각됩니다.)

마치며
워드프레스 방문자가 늘어나면 덩달아 증가하는 것이 있는데요. 바로 스팸 댓글입니다. 예전에는 영어, 일본어, 러시아어 등 외국어로 된 스팸이 많았지만 지난 몇 년 사이에는 한국어로 된 스팸도 증가하고 있습니다.
제 블로그에는 먹튀 방지 등과 관련된 스팸이 많이 올라오는 편입니다. 대부분의 댓글은 스팸이고 20~40개 중 하나 정도는 정상적인 댓글입니다. 그래서 저는 모든 댓글을 휴지통으로 이동시키고, 정상적인 댓글만 복원한 후에 휴지통을 비우는 방식을 이용하고 있습니다.
Breeze 플러그인은 댓글이 승인('1') 혹은 미승인('0')만을 고려하도록 업데이트되면서 이 블로그에서 댓글 등록 시 치명적인 에러가 발생했습니다.
코딩을 할 때 세부적인 부분을 고려하지 않으면 예상치 못한 곳에서 에러가 발생하는 것 같습니다. 이 케이스는 댓글의 상태가 승인('1'), 미승인('0') 외에도 spam, trash, delete 등 다른 옵션도 존재하는 데, 이를 고려하지 않은 것입니다.
이직도 댓글을 등록하면 치명적인 오류가 발생하는 것 같습니다.
안녕하세요, Breeze 플러그인이 업데이트되면서 다시 오류가 발생하고 있습니다. 다른 방법으로 문제 해결을 시도하고 있습니다. 이제 정상적으로 댓글이 등록될 것입니다.😄
안그래도 다른글에 여쭤볼려고 댓글을 달았는데 저 경고가 뜨길래 어떻게 해야하나~ 하고있었더니 다른분이 제보해주셔서 다행입니다!
이와 같은 오류는 사이트 운영자가 인지하기 어려울 수 있습니다. 사이트에 오류가 발견된다면 알려주시면 감사하겠습니다. 네이버 카페를 통해 알려주실 수 있습니다.😀