Q&A

php8 과 충돌하는 건가요?

2023.08.03 15:17
234
0
CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 8.0
문제 페이지 주소 비공개 (작성 후 5일 경과)

계정을 이전해서 홈페이지를 복구하는 중입니다.

기존 php7.2 에 있던 사이트를 8.0으로 옮기는데 오류 메시지가 떴는데 해결책을 못 찾겠네요...

남들이 잘 안 쓰는 위젯이라 그런지 해결책이 검색되지도 않습니다.

 

고수님들의 조언 부탁합니다.

 

Error #0 "Attempt to assign property "module_srls" on null" in widgets/doorweb_content/doorweb_content.class.php on line 78

이런 오류 메시지가 떴구요

 

78라인의 내용은 다음과 같습니다.

 

$obj->module_srls = $args->module_srls;

 

뭐를 어떻게 바꾸면 될까요

댓글 10

  • 2023.08.03 15:21 #1778662
    $obj 변수가 초기화되어 있지 않은 상태에서 값을 넣으려고 해서 그런 것 같습니다.

    $obj->module_srls = $args->module_srls; 바로 위에
    $obj = new stdClass(); 넣어보세요.
  • 2023.08.03 15:28 #1778671
    일단 넣으니 다음과 같이 다른 라인에 오류가 나타나네요...ㅜ.ㅜ
    여깁니다.

    $widget_info->slider_name = 'gySliderBot_'.rand(100000,500000).rand(100000,500000);
  • 2023.08.03 16:18 #1778680
    에러가 같은 내용이라면 마찬가지입니다.
    $widget_info = new stdClass(); 추가 해보세요.
  • 2023.08.03 16:30 #1778683
    위젯의 경우에는 상황에 따라 변수가 있기도 하고 없기도 하고, 있는 경우에는 초기화하면 곤란하기 때문에 좀 애매한 부분이 있습니다. $widget_info = $widget_info ?? new stdClass(); 이렇게 조건부로 초기화하면 안전해요.
  • 2023.08.03 16:54 #1778693
    근데 에러로그가 없어서 이렇게 초기화 해도 해결이 안될 수 있을 것 같다는 생각이 드네요. 같은 에러상황이 아니엿더라면 ㅋㅋ...
  • 2023.08.03 15:24 #1778667
    제경험에 의하면 php8이라서 생긴오류 맞고 생각보다는 처리가 어려웠습니다.
    변수가 초기화야 이래저래 해도 여기저기서 막 문제가 쏟아져나왔어요 ㅠㅠ
  • 2023.08.03 15:29 #1778675
    아 아무래도 그런거 같네요 ㅜ.ㅜ
    php7.4 에다 설치할 걸 그랬나보네요 ㅜ.ㅜ
  • 2023.08.03 17:56 #1778698
    PHP 5.5.9 -> PHP 7.0 시절에는 일부 regex 함수와 mysql 함수만 손대주면 되었는데,
    PHP 7.x -> PHP 8.x 는 잘못된 문법 사용에 대해서 거의 다 error 로 바뀌었기 때문에, 손이 많이 갈 수 있습니다.
  • 2023.08.04 04:29 #1778767
    결국 포기하게 되네요... ㅠ,ㅠ
  • 2023.08.08 09:46 #1779536
    아~ 포기했다가 마지막이라는 심정으로 차근차근 위의 설명대로 해보니 됩니다.
    고맙습니다. ㅜ,ㅜ