스케치북 비밀번호 찾기 "서버오류" 질문드려요..ㅠㅠ
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.3 |
예전에 미쳐 확인하지 못했던 건지...
갑자기 회원들이 비밀번호 찾기가 안된다고.. 문의가 와서.. 확인을 해보았는데요.
비밀번호 찾기 하면 이메일로 발송하고.. 이메일을 클릭하면 변경할 수 있는 페이지가 나오는데..
라이믹스 기본 디자인으로 하면 변경화면이 잘 표시되는데..
스케치북 회원 스킨으로 하면 로그인 창에 "서버오류" 라는 메세지만 출력이 됩니다...ㅠㅠ
에러메세지가 어딘지도 표시되지 않고... 갑갑해 죽겠네요...
로그인 상태에서 비밀번호 변경 페이지 로딩은 이상없는데... 비밀번호 찾기에서 비밀번호 변경 페이지만 오류가 납니다..ㅠㅠ
어떤 식으로 해결해야 할지 방향만 제시해 주셔도 좋겠습니다..
옵솔
Lv. 1
댓글 10
관리자 페이지의 설정 > 시스템 설정 > 디버그 설정 > 화면에 표시 클릭 + 모두에게 표시(or 관리자 PC의 IP 입력후 관리자에게만 표시 > 저장
후 나오는 에러 로그를 보여주시기 바랍니다.
Error #0 "Attempt to assign property "breadcrumb" on null" in modules/member/skins/sketchbook_member/__header.html on line 14
객체를 먼저 선언하지 않고 속성을 추가하려 하고 있습니다. 오래된 자료에서 종종 사용하던 코딩 방식이나 최근 PHP에서는 허용되지 않으니, 에러 메시지에 포함된 파일명과 줄 번호를 참고하여 수정하세요.
modules/member/skins/sketchbook_member/__header.html:14
스케치북 회원 스킨 오랜만에 보네요.
스케치북 게시판 스킨은 쓰는 사람이 워낙 많아서 꾸준히 버그가 수정되는데,
회원 스킨은 10년 넘게 아무도 건드리지 않았을 것 같습니다.
에러 내용을 확인하셨다면 거기 나오는 파일명의 몇 번째 줄로 가서
해당 부분의 소스를 보고 수정하거나, 필요없는 부분이라면 삭제하거나 하시면 됩니다.
그 분이 아직 활동하시는지 모르겠어서.. 이 곳에 질문을 올렸습니다..ㅠㅠ
if ( !isset($module_info->breadcrumb) ) $module_info->breadcrumb = 'N';
if ( !isset($module_info->cnb) ) $module_info->cnb = 'cnb3';
if ( !isset($module_info->zine_thumb_width) ) $module_info->zine_thumb_width = 80;
if ( !isset($module_info->zine_thumb_height) ) $module_info->zine_thumb_height = 45;
if ( !isset($module_info->zine_thumb_type) ) $module_info->zine_thumb_type = 'fill';
이 부분의 첫번째 라인을
if ( !isset($module_info->breadcrumb) ) $module_info= new stdClass(); $module_info->breadcrumb = 'N';
이렇게 고쳤더니.. 뜨네요...
나머지 아랫 줄들도 다 바꿔야 할까요..?
$module_info = new stdClass(); 를 선언 해주시면 될것 같습니다.
그 외에도 오브젝트를 사용하는 모듈의 항목도 보통 Attempt to assign property 에러가 나오면 해당 줄 위에 새로이 선언 해 주시면 됩니다.
php8버전을 사용중이신 것 같은데, 7까지는 동 오류가 나지 않지만 php8에서는 아마 지속적으로 오래된 자료들은 동일한 문제를 겪으실겁니다.
$module_info가 이미 있을 수도 있습니다.
회원 관련 기능은 어느 mid에든 갖다 붙일 수 있는 구조이니까요.
가장 안전한 방법은 맨 위에서
if (!isset($module_info)) $module_info = new stdClass();
이렇게 $module_info가 없는 경우에만 초기화하도록 조건을 붙이는 것이 되겠습니다.
오브젝트 선언과 관련된 오류를 확실하게 잡기가 어려운 이유가 이것입니다.
상황에 따라 오브젝트가 이미 선언되어 있을 수도 있는데,
무턱대고 초기화하면 그 전에 저장되어 있던 데이터가 날아가니까요.
감사합니다!!
감사합니다.
이건.. 어디다가 넣어도 오류가 나더라구요..ㅠ