Extra Form
PHP PHP 8.3
CMS Rhymix 2.1

예전에 미쳐 확인하지 못했던 건지...

 

갑자기 회원들이 비밀번호 찾기가 안된다고.. 문의가 와서..  확인을 해보았는데요.

 

 

비밀번호 찾기 하면 이메일로 발송하고.. 이메일을 클릭하면 변경할 수 있는 페이지가 나오는데..

 

라이믹스 기본 디자인으로 하면 변경화면이 잘 표시되는데..

 

스케치북 회원 스킨으로 하면 로그인 창에 "서버오류" 라는 메세지만 출력이 됩니다...ㅠㅠ

 

스크린샷 2024-12-09 오전 11.03.00.png

 

에러메세지가 어딘지도 표시되지 않고... 갑갑해 죽겠네요...

 

로그인 상태에서 비밀번호 변경 페이지 로딩은 이상없는데... 비밀번호 찾기에서 비밀번호 변경 페이지만 오류가 납니다..ㅠㅠ

 

어떤 식으로 해결해야 할지 방향만 제시해 주셔도 좋겠습니다..

 

 

  • Lv3
    관리자로 로그인하여 로그인 스킨을 다른 스킨으로 변경한 후
    관리자 페이지의 설정 > 시스템 설정 > 디버그 설정 > 화면에 표시 클릭 + 모두에게 표시(or 관리자 PC의 IP 입력후 관리자에게만 표시 > 저장

    후 나오는 에러 로그를 보여주시기 바랍니다.
  • Lv3 ? Lv0
    아하!! 감사합니다. 오류메세지는 이렇게 나오네요...ㅠㅠ

    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
  • Lv37

    스케치북 회원 스킨 오랜만에 보네요.
    스케치북 게시판 스킨은 쓰는 사람이 워낙 많아서 꾸준히 버그가 수정되는데,
    회원 스킨은 10년 넘게 아무도 건드리지 않았을 것 같습니다.

     

    에러 내용을 확인하셨다면 거기 나오는 파일명의 몇 번째 줄로 가서

    해당 부분의 소스를 보고 수정하거나, 필요없는 부분이라면 삭제하거나 하시면 됩니다.

  • Lv37 ? Lv0
    멤버스킨은 작년에도 이 곳에서 버그수정을 하셨더라구요...
    그 분이 아직 활동하시는지 모르겠어서.. 이 곳에 질문을 올렸습니다..ㅠㅠ
  • ? Lv0

    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';


    이렇게 고쳤더니.. 뜨네요...
    나머지 아랫 줄들도 다 바꿔야 할까요..?

  • ? Lv0 Lv3
    그렇게 하시기 보다는 $module_info가 처음 언급되는 줄 위에

    $module_info = new stdClass(); 를 선언 해주시면 될것 같습니다.

    그 외에도 오브젝트를 사용하는 모듈의 항목도 보통 Attempt to assign property 에러가 나오면 해당 줄 위에 새로이 선언 해 주시면 됩니다.

    php8버전을 사용중이신 것 같은데, 7까지는 동 오류가 나지 않지만 php8에서는 아마 지속적으로 오래된 자료들은 동일한 문제를 겪으실겁니다.
  • Lv3 Lv37

    $module_info가 이미 있을 수도 있습니다.

    회원 관련 기능은 어느 mid에든 갖다 붙일 수 있는 구조이니까요.

    가장 안전한 방법은 맨 위에서
    if (!isset($module_info)) $module_info = new stdClass();
    이렇게 $module_info가 없는 경우에만 초기화하도록 조건을 붙이는 것이 되겠습니다.

    오브젝트 선언과 관련된 오류를 확실하게 잡기가 어려운 이유가 이것입니다.
    상황에 따라 오브젝트가 이미 선언되어 있을 수도 있는데,
    무턱대고 초기화하면 그 전에 저장되어 있던 데이터가 날아가니까요.

  • Lv3 ? Lv0
    감사합니다. 다른 것들 다 찾아서 고치고 있었는데...
    이건.. 어디다가 넣어도 오류가 나더라구요..ㅠ
  • Lv37 ? Lv0
    감사합니다! 적용해보았는데 오류가 나지 않아요!
    감사합니다!!
  • Lv37 Lv3
    좋은 답변을 드리고 싶은데, 질문기여자가 아니라 그런것인지 버튼이 안보이는군요.
    감사합니다.