카페24에서 호스팅되고 있는 워드프레스 사이트를 클라우드웨이즈로 이전한 후에 테마 파일에서 Parse error가 발생하는 것을 경험했습니다. 구체적인 오류 메시지는 다음과 비슷합니다.
Parse error: Unmatched '}' in /home/123456.cloudwaysapps.com/abcdefgh/public_html/wp-content/themes/테마이름/single-movie.php on line 139
이러한 문제가 발생할 경우 확인할 사항에 대하여 살펴보겠습니다.
워드프레스 Parse error: Unmatched '}' in... 오류가 발생하는 경우 확인 사항
5개의 워드프레스 사이트들을 클라우드웨이즈에 서버를 생성하고 5개의 애플리케이션으로 이전하는 작업을 수행했습니다. 카페24에서는 각 사이트별로 상품에 가입해야 하지만, 클라우드웨이즈에서는 하나의 서버에 여러 개의 사이트를 설치하여 운영할 수 있기 때문에 여러 개의 사이트를 운영하거나 규모가 큰 사이트인 경우 더 경제적인 옵션이 될 수 있을 것입니다.
4개 사이트는 문제가 없었지만 마지막 사이트의 테마에서 오류가 발생했습니다.
해당 라인을 찾아보니 다음과 같은 코드 근처에서 문제가 발생하고 있었습니다.
<? if(get_field('movie_genre')){ ?>
문제의 원인은 숏오픈태그 때문이었습니다. [**<?**]를 [**<?php**]로 변경하니 문제가 해결되었습니다.
이 문제에 대하여 조금 더 살펴보니 [**php.ini**]에서 'short_open_tag' 기능이 'off'로 설정되어 있으면 [**<?**]를 PHP 코드의 시작 부분으로 인식하지 않아서 문제가 발생하게 된다고 합니다.
테마 파일을 커스텀하는 과정에서 하나의 파일의 일부 코드에 숏오픈 태그가 사용되면서 이런 문제가 발생하게 된 것 같습니다. (워드프레스 저장소에 업로드된 테마나 플러그인 중에서는 이런 오류가 발생하는 현상을 본 적이 없습니다.)
Cloudways에서는 'short_open_tag'가 기본적으로 'off'로 설정되어 있습니다. Parse error: Unmatched '}'... 문제가 나타나면 다음과 같은 조치를 취할 수 있습니다.
- 모든 [**<?**]를 [**<?php**]로 변경하거나
- 웹호스팅 서버에서 'short_open_tag' 기능을 'on'으로 변경합니다.
클라우드웨이즈에서 'short_open_tag' 활성화
'short_open_tag' 옵션이 'off'로 설정된 경우, 웹호스팅에 연락하여 이 옵션을 활성화할 수 있는지 문의해 볼 수 있습니다.
클라우드웨이즈에서 'short_open_tag'를 활성화해야 하는 경우, Servers 탭에서 해당 서버를 클릭하여 서버 관리 페이지로 이동합니다.
서버 관리 페이지에서 Settings & Packages » Advanced 탭을 클릭합니다.
Short Open Tag가 위의 그림과 같이 비활성화되어 있을 것입니다. 이 옵션을 활성화하면 숏오픈태그가 활성화되어 [**<?**]가 사용되어도 문제가 되지 않을 것입니다. 하지만 PHP 짧은 태그 [**<?**]를 사용하는 것보다 표준 태그인 [**<?php**]를 사용하는 것이 바람직하다고 합니다.
숏오픈 태그가 현재 환경에서 문제를 일으키지 않더라도 환경이 바뀌면 문제를 일으킬 수 있고 워드프레스 플러그인 개발과 같이 범용성이 필요한 프로젝트에서 숏오픈 태그 사용은 문제가 될 수 있습니다. 습관이 중요한 것 같습니다. 습관이 숏오픈 태그에 익숙하다면 자신도 모르는 사이 [**<?php**] 대신 [**<?**]를 사용하게 될 것입니다. [**<?**]를 주로 사용하는 경우 환경에 따라 문제가 될 수 있음을 인식하고 있으면 좋을 것 같습니다.
참고
https://avada.tistory.com/3235
https://avada.tistory.com/3046