Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

안녕하세요?

주말에 Rhymix 2.1.8로 업데이트를 했습니다.

전반적으로 큰문제는 발견되지 않았는데요.

특정 게시판에서 아래와 같은 에러가 발생했습니다.

(사실 이게 업데이트로 인해 발생한 건지 원래에도 있었는데 오늘 발견된 건지는 모르겠습니다.)

 

 

서버 오류

TypeError #0 "Return value of cut_str() must be of the type string, null returned" in modules/board/skins/common/_list_normal.html on line 202 (via common/legacy.php on line 440)

 

 

_list_normal.html 의 202번째에는 아래와 같은 확장변수의 글자를 자르는 코드가 들어있고요.

{cut_str($document->getExtraEidValueHTML('extra_var1'),22)}

 

게시판 목록의 전체에서 발생하지는 않고 특정 페이지를 들어가면 에러가 뜨는데 이를 어쩌면 좋을까요?

 

  • profile
    $document->getExtraEidValueHTML('extra_var1') 이게 null(빈값)으로 만약 찍히거나 그렇다면 문제가 발생될 여지는 있을 수 있습니다.

    $document->getExtraEidValueHTML('extra_var1') ?? '' 으로 수정하시면 오류자체는 해결될 수 있어요
  • profile
    확장변수 "extra_var1" 값이 비어있는 것을 임의로 채워주니 정상적으로 작동하네요.

    글자를 자르는 원칙이 글자가 있는 건 자르고, 없는 건 에러를 표출한다는 거라서 발생하는 것 같은데요.
    기존에는 글자가 있으면 자르고, 없으면 null 값을 출력한다였나보네요.....
  • profile profile
    아 다시 보니 return 값이 string이 아닌 null으로 출력하고 있었나보네요.

    해당 값이 없으니 리턴이 나온 모양인데 저거 자체는 기본적으로 boolean 타입의 false를 https://github.com/rhymix/rhymix/blob/master/common/legacy.php#L478C12-L478C18 이 링크의 코드에서 리턴 시켜서 그럴겁니다.

    확인해보니 php7까지는 그것이 무조건 리턴이 false으로 출력하게 되어있다보니 여기에서 false가 출력이 되엇다면 실제로 값이 없어보이는 것으로 리턴되시을 가능성이 없진 않네요.

    결과적으로 처음에 extra_var1 쪽에 들어가야할 내용이 없어서 생긴 문제임은 마찬가지라서.. 리턴을 실제로 문자열을 해주지 못한 상황이라 에러가 발생된것으로 보여지네요.

    참고로 PHP8에서는 무조건 '' 빈 문자열로 나오기때문에 위의 에러가 나타나지 않을겁니다.
  • profile profile

    기진님께서 라이믹스 develop브랜치에 패치 해주셧네요. 다음 패치때 받으시면 될 것 같아요!

     

    https://github.com/rhymix/rhymix/commit/7132ef4c000fd9ee201219e87709a4da8127d2d2

  • profile profile
    오~ 확인했습니다.
    감사합니다~~!!