웹마스터 팁
위젯수정시 _getContent method is not exists 에러 뜨는 문제
2014.11.14 15:34
관리자모드 사이트메뉴편집에서 위젯 페이지를 생성하고 난 뒤에
이 페이지에 내용을 넣고 저장을 누르면 저장이 되지 않는 현상이 생기는 경우가 있습니다.
그리고 페이지를 새로 고침하고 나면 _getContent method is not exists 라는 에러 메시지 창을 띄우는 경우가 있습니다.
같은 문제로 여러가지 경우로 수십번 삽질하고 나서 찾아낸 것입니다.
아마도 Xe 1.7.4.0 버전 부터 Xe 1.7.7.2 버전까지 발생되고 있는 한데요
(Xe 1.7.3.8 버전에서는 이런 현상이 안생깁니다.)
결론적으로 그 원인을 말씀드리면 서버의 php버전이 낮을 때 생깁니다.
서버의 php버전이 5..3 미만일때 즉 php 5.2.17 등등의 버전에서 발생합니다.
오류현상
1.XE 관리자모드에서 "사이트메뉴편집"으로 들어간후
2.새로운 페이지를 생성을 위해 "메뉴추가">"위젯페이지"선택후 메뉴이름과 메뉴ID를 넣고 생성
3.메뉴에 새로운 위젯페이지 생성확인됨.(문서페이지를 생성해도 동일함)
4.새로생성된 메뉴를 선택한후 우측상자에서 레이아웃설정을 위해 "디자인"선택
5.우측상자에서 레이아웃을 선택하고 확인 누름
6. 관리자페이지 "사이트메뉴편집"모드에서 생성된 위젯페이지를 클릭해서 이동
7. 페이지 수정>내용직접추가> 실행한다
8. 화면이 바뀌지 않고 저장이 실행되지 않는다.
9. 화면 새로고침을 하면 _getContent method is not exists 메시지창이 뜬다.
10. 관리자페이지 "사이트메뉴편집"모드로 가보면 생성되었던 위젯페이지가
메뉴 타입 : page(모듈이 존재하지 않음) 이라고 바뀌어 있음을 확인할 수 있다.
위의 현상에 대한 버그 리포트는 Xe 1.7.4.버전에 대해 treasurej님의 버그리포트가 있었음.
#474
위와 같은 현상은 페이지생성후에 레이아웃을 선택하지 않으면 정상적인 페이지 수정이 가능함
페이지 생성후 레이아웃을 선택했을 경우에만 발생함.(레이아웃 종류에 상관없음)
해결책:
php버전을 php 5.3으로 버전업하면 됩니다.
그러나 웹호스팅을 받는 경우php버전업이 쉽지 않습니다.
이럴때는 임시로 다음과 같은 방법으로 해결가능합니다.
위젯페이지생성>레이아웃선택>후에 해당 페이지를 바로 수정하지 말고
관리자모드에서 "캐시파일 재생성"을 먼저 실행해 주고 난뒤에
해당 위젯 페이지를 수정하면 해당문제가 발생하지 않습니다.
위젯페이지나 문서페이지든 모든 페이지 생성후에는
반드시 "캐시파일 재생성"을 실행해야만 만들어진 페이지를 수정할 수 있고 정상작동 됩니다.
또 다른 해결책으로는
관리자페이지 "사이트메뉴편집"모드에서 레이아웃을 설정하지 말고
생성된 페이지로 이동한 후 해당 페이지의 설정에서 레이아웃을 지정하면
해당 문제가 발생하지 않습니다.