댓글 등록 시 치명적인 오류가 발생하는 문제 수정

Last Updated: 2025년 03월 16일 4개 댓글

이 블로그에서 며칠 전부터 댓글을 작성하여 제출하면 치명적인 오류가 발생하는 문제가 있었습니다. 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 등 다른 옵션도 존재하는 데, 이를 고려하지 않은 것입니다.

참고

워드크래커의 아바타 이미지

워드크래커

전문 영한번역가. 워드프레스 애호가. 네이버 카페 「워프사」 운영.

4 개 댓글

댓글 남기기

    • 안녕하세요, Breeze 플러그인이 업데이트되면서 다시 오류가 발생하고 있습니다. 다른 방법으로 문제 해결을 시도하고 있습니다. 이제 정상적으로 댓글이 등록될 것입니다.😄

      응답
  1. 안그래도 다른글에 여쭤볼려고 댓글을 달았는데 저 경고가 뜨길래 어떻게 해야하나~ 하고있었더니 다른분이 제보해주셔서 다행입니다!

    응답
카카오톡 상담 카톡 서비스 상담