×

앱 설치 안내

리빌더 공식 홈페이지 바로가기를 PC에 설치해보세요!
바탕화면에서 앱으로 실행할 수 있어요.

개선/제안

2025.07.16 00:13

php 8.2에서 에러가 간혹 납니다.

먼저 리빌더를 제공해주셔서 감사해요.

자체 푸시 시스템을 구축중인데 간혹가다 에러가 나더라구요. 그 원인을 명확히 알지 못하였던게 웹호스팅을 쓰고 있고 거기서 php에러 로그가 정확히 나오지 않아 볼 수가 없는 상황이었습니다. 에러가 Optional parameter $skin_dir declared before required parameter $bo_table is implicitly treated as a required parameter이런
비슷한 것이라고 나오는 건 나중에서야 확인했어요.

에러가 뭔지는 나왔는데 어디서 에러가 나오는지 조차도 나오지 않은 상황에 검색하다 어느 분의 사이트에서 동일한 에러가 보이는 걸 발견해서 소스를 보니 ​원인을 알겠더라구요.

extend/rb_core.extend.php하고 rb_shop.extend.php하고 두 군데서 에러납니다. 에러나는 함수들은 다음과 같아요:
먼저 extend/rb_core.extend.php:

function rb_latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=1, $options='', $md_sca='', $md_order='', $rb_module_table='', $is_notice=0)

function rb_get_view_thumbnail($contents, $thumb_width=0, $wr_id)

그 다음  extend/rb_shop.extend.php:

function rb_latest_shop($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=1, $options='', $md_sca='')

function rb_list_skin_options_chk($pattern, $dirname = './', $selected_value)

오류가 나는 원인은 다음과 같아요. 함수를 선언할 때 디폴트 값이 있는 경우가 있어요. 디폴트값이 있는 변수가 뒤쪽으로 가야하고, 반드시 디폴트 값이 없는 변수들이 앞쪽에 있어야 해요. 그건 다음의 경우를 생각해보면 나와요. 
가령 다음의 정의가 있다고 한다면: function func($a, $b=1, $c='')
다음처럼 쓸 수 있겠죠. func(a, b, c) 혹은 func(a, b) 혹은 func(a)
그런데 만일 다음처럼 된다면 어떻게 될까요? function func($a=4, $b, $c='')
지금까지는 이렇게 생각해왔을 거에요: func($a, $b), func($a, $b, $c) 이렇게 쓰면 되었죠.

하지만 원래 거의 모든 프로그램은 이런 걸 받아주지 않아요. php도 8.2인지는 모르겠는데 이제 이런 부분을 Optional error로 취급하기 시작했어요.
따라서 위의 에러나는 네 개의 함수들 모두 규칙에 맞게 수정해야 해요. 저 같은 경우 중간이나 끝에 있는 변수들이 디폴트값이 없으면 거기에 =''로 디폴트 값을 주어 해결했습니다.
  • 공유링크 복사
    미니홈 쪽지 구독하기
    구독하고 알림받기

    댓글목록

    profile_image
    리빌더미니홈 1:1 대화하기  8일 전

    안녕하세요. 알려주셔서 고맙습니다.
    다음 버전에서 수정반영 하도록 하겠습니다.

    편안한 하루 되세요.
    감사합니다.

    2025-07-16 00:23