
×
앱 설치 안내
리빌더 공식 홈페이지 바로가기를 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로 취급하기 시작했어요.
따라서 위의 에러나는 네 개의 함수들 모두 규칙에 맞게 수정해야 해요. 저 같은 경우 중간이나 끝에 있는 변수들이 디폴트값이 없으면 거기에 =''로 디폴트 값을 주어 해결했습니다.
- 이전글rb 에디터 글쓰기 창 높이2025.07.16
- 다음글쇼핑몰 제작하면서 느낀건데2025.07.15
댓글목록
