$oDocument->isExists() 사용 500에러
CMS/프레임워크 | XE 1.x |
---|---|
개발 언어 | PHP 7.2 |
게시판 상담기능 사용에 체크를 하고
접근 권한을 모든 대상에게 열어두면
알아서 게시판 스킨의 message.html 을 읽어 옵니다.
여기에 _header.html 을 불러오는데..
$oDocument->isExists() 의 함수가 사용되면 비로그인 상태에서 해당 게시판에 접근하면 500에러가 발생합니다.(백지)
로그인을 할 경우는 이상이 없구요.
여기서 해결법은 상담 기능을 체크한 경우 접근권한을 로그인 대상자로 하여 비로그인 한 상태에서 접근하면 메시지모듈? 의 에러메시지로 출력되어 500에러가 발생하지 않습니다.
이와 같은 상황이 XE에서는 당연히 발생하는 증상인지 궁금합니다.
스킨제작자분께서 이 부분을 해결하려면 코드를 어떻게 고쳐야 하는걸까요?
댓글 3
현재 보고 있는 문서가 없다면 $oDocument라는 변수가 아예 존재하지 않을 것입니다. 존재하지 않는 변수에 ->isExists() 메소드를 실행하면 치명적인 오류가 발생하면서 500 코드가 나타나게 됩니다.
if($oDocument->isExists())
이렇게 되어 있는 코드에서 치명적인 오류가 발생한다면
if($oDocument && $oDocument->isExists())
이렇게 먼저 $oDocument 변수의 존재 여부를 확인한 후 사용하시면 됩니다.
상담기능 체크할 경우 접근을 열어두면 생기는 문제인데 코드가 완벽하지 않았다고 보는게 맞겠죠?
상담기능이 동작하지 않았다면 발생하지는 않는 상황이긴 합니다.
상담기능을 쓰지 않고 비회원이 막혀야 하는 경우는 권한설정에서 권한을 제대로 설정할 수 밖에 없을테니...
아마 메시지모듈 에러 출력할 경우는 게시판 스킨이 불러올 이유는 없을거구요...