CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
문제 페이지 주소 | 비공개 (작성 후 5일 경과) |
언제부터인가..(라이믹스 업데이트 이후였던 것 같은데...ㅎ)
최근 게시물을 불러오는 페이지를 수정하면, 아래 그림과 같은 오류가 납니다.
아래 그림처럼, XE시절의 최근 문서 위젯을 사용하는데요..
이 최근 게시물 위젯이 오래되어서 그런 것 같은데요..
에러 내용을 보면
list.html 의 17줄에 무슨 문제라고 하는데, 실제 해당 파일을 열어보면, 2줄짜리 파일이더라구요.
어떻게 하면 해결할 수 있을까요?
영구만세
Lv. 1
댓글 18
지금 화면에 표시되는 오류의 위젯은 "newest_comment" -> 최신 댓글 위젯입니다..^^
제가 방금 XE 공홈에서 위젯을 받아 게시판 하나로 테스트 했을때에는 별도의 오류가 없었는데요.
기존의 newest_comment 위젯을 백업하시고 제가 첨부한 위젯으로 바꿔보시겠어요?
newest_comment.zip
넵. 감사합니다. 한 번 시도해 보겠습니다.ㅎㅎ
공홈에서 newest_comment 위젯을 받아서 다시 설치해 봤는데도 똑같네요..
이것도 호스팅 업체의 보안정책과 관련이 있을까요?
요즘 호스팅 업체의 보안정책 때문에 여러가지 문제가 있어서...
저는 그러한 영향을 받지는 못했는데, 보안 정책이 문제일 수도 있습니다..
2줄짜리 파일의 17번째 줄에서 오류가 나는 등 황당한 시츄에이션이 계속된다면
서버의 캐시(임시파일)가 단단히 꼬여있을 수도 있습니다.
오류의 내용 역시, XE 시절부터 단 한 번도 존재했던 적이 없는 함수를 호출하려고 하는 것 같고요.
캐시파일 재생성 후, "서버 환경 표시" 화면 하단에 있는 opcache reset도 클릭해 보세요.
"opcache를 사용하지 않는 서버입니다."
라는 메세지가 뜨고, 변화없이 오류가 납니다...
아, opcache가 없는 서버라면 그 부분은 비우지 않아도 됩니다.
아, 죄송해요...
문제를 일으키는 list.html은 두 줄로 되어 있는 게 아니라.. 여러 줄로 되어 있습니다.
파일 내용은 이렇게 되어 있습니다.
17번째 줄 내용은
이렇습니다.
여전히 이상하네요. 에러 메시지는 get이라는 메소드가 존재하지 않는다는 내용인데, 이 파일 어디에도 get이라는 메소드를 호출하는 곳은 없거든요. getCommentCount처럼 단순히 get이라는 단어가 포함되어 있는 것은 전혀 다른 메소드이고요.
어쩌다보니 제 개인 홈과 모임의 홈 두 개를 관리하는데요..
다른 QnA에서 문의했던 도메인(aallda.org)에서도 똑같은 위젯을 사용합니다. 그런데, aallda.org 에서는 이 현상이 없습니다.
그리고 레이아웃은 XpressEngine ver.2를 조금 손 봐서 사용하고 있습니다.
참고로 현재 사용중인 위젯은 그림과 같습니다.
정리하면,
1.
./widgets/newest_document/skins/xe_official/list.html
파일의 17번째 줄에서 문제가 있다는 오류 메세지가 뜨고요.
2.
구 XE홈의 최근 게시물 위젯 파일(newest_document)을 다운받아서 다시 설치해도 마찬가지입니다.
원글의 스샷을 자세히 보면 newest_comment (최근 댓글) 위젯 스킨에서 에러가 나는데요, 혹시 newest_document (최근 문서) 위젯과 헷갈리신 것 아닐까요? 아까 붙여주신 소스코드에도 Document (문서)라는 변수가 너무 많이 나와서, 댓글과 관련된 스킨이 맞는지 의문이 듭니다. 다시 확인해 보시겠어요?
newest_comment (최근 댓글) 위젯 스킨에서 에러가 나는게 맞네요..
그래서 해당 위젯을 XE 공홈의 것으로 교체해 봤는데요..
똑같은 에러가 납니다.
아까 올리신 것과 다른 파일이죠? 그 파일에는 어떤 내용이 있나요?
네. 이 파일은 위의 "newest_document"가 아닌,
./widgets/newest_comment/skins/xe_official/list.html
입니다.
newest_comment.class.php 59줄
$output = $oCommentModel->getNewestCommentList($obj);
바로 아래에
if (!is_array($output)) $output = array();
라고 추가해 보세요.
16년 전에 마지막으로 업데이트된 애드온이라 코드 퀄리티가 마치 사극을 보는 것 같은 상태인데,
아무튼 위의 한 줄 추가하면 에러는 안 납니다.
그 상태에서 최근 댓글이 제대로 나올지는 모르겠고요.
덕분에, 완전 해결되었습니다.
저야 코딩엔 문외한이라..잘 모르지만, 언젠가부터 이상하더라고요..
감사합니다!!!!