지난주부터 10개가 넘는 워드프레스 사이트를 싱가포르의 한 웹호스팅 업체에서 클라우드웨이즈로 이전하는 작업을 맡고 있습니다. 대부분 사이트의 워드프레스 버전이 낮고, PHP 버전도 5.6 또는 7.4로 낮은 편입니다. 다행히 대부분의 사이트는 문제없이 이전이 되었지만, 한 사이트가 PHP 버전 호환성 문제로 이전에 실패했습니다.
워드프레스 사이트를 운영하는 경우 가급적 최신 버전으로 업데이트하여 최신 상태로 유지하는 것이 바람직합니다. 몇 년 동안 업데이트하지 않다가 시스템을 업그레이드(PHP 버전 업그레이드 포함)하거나 PHP 버전이 높은 다른 웹호스팅으로 이전할 경우 오류가 발생하는 경우가 있을 수 있습니다. 워드프레스 버전과 테마, 플러그인을 모두 최신 버전으로 업데이트하면 문제가 해결될 수도 있지만, 간혹 업데이트를 할 수 없는 상황이 되기도 합니다.
PHP 버전 차이로 인한 워드프레스 사이트 이전 실패
고객 중 한 분이 싱가포르에서 사이트 제작을 비롯하여 여러 가지 사업을 하시고 계십니다. 클라이언트를 통해 싱가포르에 대한 유용한 정도를 자주 듣고 있습니다.😄
싱가포르는 물가가 특히 높다고 하네요. 이 때문인지 웹호스팅 비용도 상당히 높은 편입니다. 싱가포르 현재 웹호스팅을 클라께서 이용하고 계신데, 비용이 너무 많이 나와서 몇 십 개의 사이트 중에서 우선 중요한 사이트를 간추려서 클라우드웨이즈로 이전하고 있습니다.
대부분의 사이트가 오래 전에 제작되었고 업데이트가 되지 않아서 워드프레스 버전과 PHP 버전이 낮은 편입니다. PHP 7.4에 비교적 높은 워드프레스 버전을 유지하는 사이트도 몇 개 있지만, PHP 버전과 워드프레스 버전이 낮은 경우가 많네요.
클라우드웨이즈에서는 PHP 7.4부터 지원이 됩니다. 최신 워드프레스 버전을 운영하려면 PHP 7.4 이상이 되어야 합니다. PHP 7.3 이하인 경우 일부 플러그인이 설치되지 않거나 업데이트가 안 될 수 있습니다. 워드프레스 5.6 이하이면 최신 워드프레스 버전도 설치가 안 됩니다.
현재 클라우드웨이즈에서는 2024년 7월 현재 기준으로 PHP 7.4, 8.0, 8.1, 8.2 또는 8.3 버전을 선택할 있습니다.
PHP Compatibility and WordPress Versions (PHP 호환성과 워드프레스 버전) 문서에 의하면 워드프레스 6.3 버전부터 워드프레스 5.3에 대한 지원이 중단되었습니다.
대부분의 사이트를 이전하고 PHP 버전을 7.4로 설정하니 문제가 발생하지 않았지만 한 사이트가 PHP 호환성 문제로 사이트가 열리지 않는 오류가 발생했습니다.
기존 사이트의 PHP 버전은 5.6.40이었습니다.
그리고 워드프레스 버전은 살펴보니 4.3.34였습니다.
워드프레스 버전 History를 살펴보니 워드프레스 4.3 버전은 2016년 8월에 공개되었네요.
이전 후에 사이트에 접속하니 치명적인 오류가 발생하여 에러 로그를 확인해 보니 레볼루션 슬라이더(Slider Revolution)이 문제를 일으키고 있었습니다.
Fatal error: Uncaught Error: [] operator not supported for strings in /home/customer/www/public_html/wp-content/plugins/revslider/inc_php/framework/base_admin.class.php:73 Stack trace: #0 /home/customer/www/public_html/wp-content/plugins/revslider/revslider_admin.php(237): UniteBaseAdminClassRev::addMetaBox('Revolution Slid...', Object(UniteSettingsAdvancedRev), Array, NULL) #1 /home/customer/www/public_html/wp-content/plugins/revslider/revslider_admin.php(68): RevSliderAdmin->addSliderMetaBox() #2 /home/customer/www/public_html/wp-content/plugins/revslider/revslider_admin.php(40): RevSliderAdmin->init() #3 /home/customer/www/public_html/wp-content/plugins/revslider/revslider.php(147): RevSliderAdmin->__construct('/home/customer/...') #4 /home/customer/www/public_html/wp-settings.php(215): include_once('/home/customer/...') #5 /home/customer/www/publ in /home/customer/www/public_html/wp-content/plugins/revslider/inc_php/framework/base_admin.class.php on line 73
PHP 7.4에서는 문자열에 배열 연산자를 사용하면 오류가 발생한다고 합니다. 문제의 코드에서 $arrMetaBoxes 변수가 문자열로 초기화되어 있는데, 나중에 배열로 사용될 때 문제가 된다고 합니다.
한 에러를 해결하면 다른 에러가 계속 나타났습니다.
Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file in /home/customer/www/public_html/wp-content/plugins/revslider/inc_php/framework/base_admin.class.php on line 103
모든 에러를 수정하여 프런트엔드 사이트가 표시되는 데까지 성공했지만, 로그인 페이지에 접속하려고 시도하니 또 에러가 발생했습니다.
그래서 기존 상태에서 문제가 되는 테마나 플러그인 파일을 수정하는 것으로는 문제를 해결하기에는 너무 많은 시간과 노력이 들어가는 것으로 보여 문제 수정을 포기했습니다.
이런 경우 올바른 방법은 워드프레스, 테마, 플러그인을 모두 최신 버전으로 업데이트하는 것입니다. 하지만 문제의 테마는 Themeforest 사이트에서 제거되어 최신 버전을 구할 수가 없었습니다. Venedor라는 우커머스 테마가 사이트에 사용되었습니다.
하지만 해당 테마 판매 사이트에 접속하니 테마가 제거되었다는 안내문이 표시되었습니다.
시간이 충분하고 노력에 대하여 제대로 된 비용을 받는다면 PHP 7.4에서 호환되지 않는 코드를 확인하여 수정할 수 있겠지만, 현실적으로 쉽지 않아서 이 사이트는 이전을 하지 않기로 했습니다.
테마를 선택할 때 많은 사용자가 사용하는 인기 테마를 선택하는 것이 바람직할 수 있습니다. 아바다나 GeneratePress 등과 같이 많은 사용자가 사용하는 테마는 판매자가 유지보수를 포기할 가능성이 낮을 것입니다.
요약하면...
- 다른 호스팅으로 사이트 이전 시 서버 환경을 비슷하게 설정해야 마이그레이션 후에 오류가 발생할 가능성이 낮습니다.
- 가능하면 워드프레스, 테마, 플러그인을 최신 버전으로 지속적으로 업데이트하는 것이 바람직합니다. 몇 년 동안 업데이트를 하지 않다가 갑자기 높은 버전으로 업데이트할 경우 오류가 발생할 가능성이 있을 수 있습니다.
- 오랫동안 업데이트가 안 되고 방치된 테마와 플러그인은 사용하지 않는 것이 안전합니다.
참고
https://avada.tistory.com/2765
https://avada.tistory.com/3401
https://avada.tistory.com/3389