PHP 업그레이드 시 워드프레스 테마가 오류를 일으키는 경우

워드프레스 정보를 제공하는 블로그 Avada 2023. 9. 14. 00:10 • 댓글:

PHP 5.6 버전에서 호스팅되는 워드프레스 사이트를 해외호스팅 중 하나인 사이트그라운드(SiteGround)로 이전하는 작업을 최근 수행했습니다. 사이트그라운드로 워드프레스 사이트를 이전한 후에 워드프레스 관리자 페이지 로그인 페이지에 접속하면 다음과 같은 경고가 표시되면서 로그인 페이지가 표시되지 않는 문제가 발생하는 것을 경험했습니다.

PHP 업그레이드 시 워드프레스 테마가 오류를 일으키는 경우

웹호스팅 이전 또는 PHP 업그레이드 시 워드프레스 테마가 오류를 일으키는 경우

워드프레스 관리자 페이지에 접속 시 다음과 같은 오류 메시지가 표시되었는데요.

Warning: Declaration of Walker_Portfolio_Category::start_el(&$output, $category, $depth, $args) should be compatible with Walker_Category::start_el(&$output, $data_object, $depth = 0, $args = Array, $current_object_id = 0) in /home/customer/www/your-domain.com/public_html/wp-content/themes/heat/functions.php on line 1369

Warning: Cannot modify header information - headers already sent by (output started at /home/customer/www/your-domain.com/public_html/wp-content/themes/heat/functions.php:0) in /home/customer/www/your-domain.com/public_html/wp-includes/pluggable.php on line 1427

이 문제의 근본적인 원인은 테마가 PHP 7.4 버전과 호환되지 않아서 발생하는 것으로 추정되었습니다.

사이트그라운드에서는 PHP 7.3, PHP 7.4, PHP 8.0, PHP 8.1, PHP 8.2를 선택할 수 있고 PHP 8.3.0(베타) 버전도 선택할 수 있습니다.

[참고*사이트그라운드는 우리나라를 비롯한 일부 국가에서 신규 가입을 하지 못하도록 바뀌었습니다. 대안으로 가성비 좋은 블루호스트와 같은 해외호스팅이나 속도가 빠른 클라우드웨이즈와 같은 클라우드 호스팅을 고려해볼 수 있습니다.*]

저는 PHP 7.4.33 버전을 선택했습니다. 

테마 함수 파일의 다음 라인 부근에서 에러가 발생했습니다.

class Walker_Portfolio_Category extends Walker_Category {

   function start_el(&$output, $category, $depth, $args) {

      extract($args);

      $cat_name = esc_attr( $category->name);

      $cat_name = apply_filters( 'list_cats', $cat_name, $category );
      ...

이러한 문제는 직접 테마 파일을 수정하기보다는 테마 개발자/판매자에게 연락하여 최신 테마 설치 파일을 요구하는 것이 가장 확실합니다.

설치된 워드프레스 테마를 살펴보니 Heat라는 테마인데, 2015년 9월 27일 이전에 만들어진 버전 같았습니다.

[**style.css**] 파일을 살펴보면 테마 개발자 사이트 URL이 있을 수 있습니다. 이 테마의 경우 테마 개발자 사이트 URL을 접속하니 사이트가 더 이상 운영되지 않고 있었습니다.

이런 상황에서는 난감하지 않을 수 있습니다. 이 경우 1) 다른 테마를 설치하여 사이트를 리뉴얼하거나, 2) 문제가 되는 부분만 어떻게든 수정하여 운영하는 방법이 있을 수 있습니다.

판매가 저조한 테마는 사라질 가능성이 높으므로 오랫동안 사이트를 운영하고 싶은 경우에는 아바다 등 인기 테마를 선택하는 것이 도움이 될 수 있습니다.

저는 문제가 되는 함수 파일에서 다음 라인을 찾아서

function start_el(&$output, $category, $depth, $args)

다음과 비슷하게 수정하여 문제를 해결했습니다.

function start_el(&$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0)

하지만 이것은 임시방편일 뿐입니다. WPBakery 페이지 빌더 버전이 너무 오래되어 최신 워드프레스 버전과 PHP 7.4에서 정상적으로 작동하지 않았습니다.

다행히 비교적 최신 버전의 WPBakery Page Builder를 설치하니 문제가 해결되었습니다.

기존에 설치된 버전은 4.5.3 버전이고 플러그인 이름도 WPBakery Visual Composer(비주얼 컴포터)였습니다. 오래전에 Visual Composer에서 현재의 WPBakery Page Builder로 플러그인 명칭이 변경되었습니다.

마치며

오랫동안 업데이트가 안 되고 방치된 플러그인이나 테마를 사용할 경우 다른 플러그인이나 최신 워드프레스 버전 혹은 최신 PHP 버전과 충돌을 야기할 수 있고, 사이트가 해킹되거나 멀웨어에 감염되는 등 보안 문제가 발생할 수도 있으므로 가급적 워드프레스 코어, 테마, 플러그인을 모두 최신 버전으로 업데이트하는 것이 바람직합니다.

워드프레스 6.3에서는 PHP 버전 5에 대한 지원이 중단되었습니다. 가급적 PHP 7.4 이상을 사용하는 것이 좋습니다.

 

워드프레스 6.3 업데이트: PHP 5 지원 중단

오늘 새벽에 워드프레스가 6.3 버전으로 업데이트되었습니다. 워드프레스 6.3은 올해의 두 번째 메이저 릴리스로서 사이트 에디터 개선에 중점을 두고 있습니다. 또한, 워드프레스 6.3에는 스크립

avada.tistory.com

참고

https://avada.tistory.com/3046

 

해외웹호스팅: 클라우드웨이즈 vs. 블루호스트 비교 (Cloudways vs. Bluehost)

저는 오랫동안 블루호스트(Bluehost)를 이용해 왔으며 2021년부터는 클라우드웨이즈(Cloudways) 웹호스팅 서비스도 함께 이용하고 있습니다. 현재 메인 워드프레스 블로그는 Bluehost에서 호스팅되고 있

avada.tistory.com

https://avada.tistory.com/3117

 

워드프레스 "지속적인 객체 캐시를 사용해야 합니다" 경고 발생 시 참고 사항

대부분의 워드프레스 사이트의 사이트 건강에서 "지속적인 객체 캐시를 사용해야 합니다" 경고가 표시될 것입니다. 지속적인 객체 캐시란 무엇인지, 그리고 지속적인 객체 캐시에 대한 개선 사

avada.tistory.com