아바다 테마 'Warning: Trying to access array offset on value of type bool' 경고

인기 다목적 워드프레스 테마인 아바다(Avada)를 설치한 사이트에서 'Warning: Trying to access array offset on value of type bool...' 경고가 표시되는 경우가 있습니다. 이러한 오류가 표시되는 경우 확인 사항에 대해 살펴보겠습니다.

아바다 테마 'Warning: Trying to access array offset on value of type bool' 경고

이 사이트에 일시적으로 아바다 테마를 설치하여 사용한 적이 있습니다. 지금은 테스트 용도로만 설치하여 사용하고 있습니다.

테스트 사이트에 설치된 아바다 테마에서 다음과 같은 경고가 표시되었습니다.

Warning: Trying to access array offset on value of type bool in /home/public_html/wp-content/themes/Avada/includes/class-avada-head.php on line 174

구글에 검색해보면 이 경고가 발생하는 사이트가 제법 있습니다.

아바다 테마 'Warning: Trying to access array offset on value of type bool' 경고

class-avada-head.php의 라인 174 부근의 코드는 다음과 같습니다.

} else {
			$thumbnail_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'full' );
			$image         = esc_attr( $thumbnail_src[0] );
		}

이 경고가 표시되는 사이트에는 PHP 8.0이 적용되어 있었습니다. PHP 버전을 7.4로 다운그레이드하니 경고가 사라졌습니다. 서버에 일부 PHP 모듈이 누락되어 발생하지 않았을까 의심되어 일일이 PHP 모듈을 하나씩 활성화/비활성화하면서 테스트해보니 경고가 사라지지 않았습니다.

이 과정에서 재미있는 사실을 발견했습니다. PHP 8.0이 적용된 다른 호스팅의 사이트에 아바다 테마를 설치하여 확인해보니 이 경고가 표시되지 않았습니다. 문제가 발생하는 사이트에서 아바다 라이선스를 일시적으로 비활성화(등록 취소)하였다가 다시 활성화(등록)한 다음, Avada Core와 Avada Builder를 제외한 모든 플러그인을 비활성화해보니 문제가 발생하지 않았습니다. 그리고 다시 플러그인을 활성화해도 문제가 재발하지 않았습니다.

요약

  1. 이 경고가 표시되는 경우 Avada Core와 Avada Builder를 제외한 모든 플러그인을 비활성화하여 문제가 해결되는지 확인합니다. 경고가 표시되지 않으면 다시 플러그인을 하나씩 활성화하면서 문제가 발생하지 않는지 체크합니다.
  2. 워드프레스 알림판 > Avada > Dashboard에서 Unregister 버튼을 클릭하여 아바다 라이선스를 비활성화했다가 다시 Item Purchase Code(구매 코드)를 입력하여 테마를 재등록하여 문제가 해결되는지 체크합니다. 문제가 계속 발생하면, 이 상태에서 Avada Core/Avada Builder를 제외한 모든 플러그인을 비활성화하여 문제가 해결되는지 확인합니다. 다시 플러그인을 활성화하면 경고가 사라질 수 있습니다.
  3. 위의 조치로 해결이 안 되면 PHP 버전이 PHP 8.0인 경우 PHP 7.4로 변경합니다.
  4. 여전히 문제가 해결되지 않으면 아바다 테마 판매자에게 지원을 요청합니다. 지원을 요청하기 위해서는 유효한 지원 라이선스가 있어야 합니다.

마치며

아바다 테마에서 'Warning: Trying to access array offset on value of type bool...' 경고가 표시되어 PHP 8.0과의 호환성에 문제가 있을 것 같다는 생각이 들었지만, 어떤 이유인지 몰라도 1) 사이트에서 아바다 테마 라이선스의 등록을 해제한 다음 다시 등록하고, 2) 플러그인들을 비활성화한 후 다시 활성화하니 경고가 사라졌습니다.

PHP 8.0에서 아직도 일부 테마나 플러그인이 문제를 일으킬 수 있습니다. 예를 들어, PHP 8.0이 적용된 워드프레스 사이트에 케이보드(Kboard)를 설치할 경우 제대로 작동하지 않을 것입니다. 호스팅 업체가 다른 두 사이트(PHP 8.0 적용)에 케이보드를 설치하여 테스트해보니 한 사이트에서는 "이 웹사이트에 치명적인 오류가 있습니다." 에러가 발생했고, 다른 한 사이트에서는 다음과 같은 Fatal error가 표시되었습니다.

Fatal error: Uncaught TypeError: in_array(): Argument #2 ($haystack) must be of type array, null given in /home/public_html/demos/wp-content/plugins/kboard/class/KBContent.class.php:626 Stack trace: #0 /home/public_html/demos/wp-content/plugins/kboard/class/KBContent.class.php(626): in_array() #1 /home/public_html/demos/wp-content/plugins/kboard/class/KBoardBuilder.class.php(516): KBContent->increaseView() #2 /home/public_html/demos/wp-content/plugins/kboard/class/KBoardBuilder.class.php(312): KBoardBuilder->builderDocument() #3 /home/public_html/demos/wp-content/plugins/kboard/index.php(808): KBoardBuilder->create() #4 /home/public_html/demos/wp-includes/shortcodes.php(356): kboard_builder() #5 [internal function]: do_shortcode_tag() #6 /home/public_html/demos/wp-includes/shortcodes.php(228): preg_replace_callback() #7 /home/public_html/demos/wp-includes/class-wp-hook.php(303): do_shortcode() #8 /home/public_html/demos/wp-includes/plugin.php(189): WP_Hook->apply_filters() #9 /home/public_html/demos/wp-includes/post-template.php(253): apply_filters() #10 /home/public_html/demos/wp-content/themes/dt-the7/page.php(31): the_content() #11 /home/public_html/demos/wp-includes/template-loader.php(106): include('/home/...') #12 /home/public_html/demos/wp-blog-header.php(19): require_once('/home/...') #13 /home/public_html/demos/index.php(17): require('/home/...') #14 {main} thrown in /home/public_html/demos/wp-content/plugins/kboard/class/KBContent.class.php on line 626

이 오류가 발생하는 경우 대체 게시판 플러그인(예: 망보드)을 사용하거나 PHP 버전을 7.4 또는 7.3으로 변경할 수 있습니다.

참고


댓글 남기기

* 이메일 주소는 공개되지 않습니다.