이전글인 18691 번에서 제가 생각했었던대로 플러그인 모듈 두개만 처리하며 될 줄 알았는데,
이제보니 수정했다고 생각한 서드파티 모듈들의 문제가 실제 게시판들을 작성하고 불러오니까 주욱 튀어나오네요.
몇시간을 꼬박 뒤지다가 결국은 제가 더 모르는 내용들만 많아지니 한숨만 나옵니다.
결국은 하나하나, 질문드리면서 많은 분들께 도움을 요청드려야할 상황이네요.
아마 이 내용들도 쌓여서 나중에 다른분들께도 도움이 되었으면 합니다.
저도 7.2 넘어올때 그렇게 편히 왔으니, 다른분들의 도움을 잘 남겨서 8.3 넘어가시는 분들께 조금이나마 참고가 되었으면 합니다.
사용버전
라이믹스 : 2.1.12
PHP : 8.3
레이아웃 디자인으로 가서 기존 페이지 구성했던 홈페이지 설정값을 모두 반영했습니다.
그랬더니 아래처럼 메인페이지가 난리네요;;
multi_limit); $multi_readed_count = $_SESSION['sejin7940_readed_count'][$document_srl]; if(!$multi_readed_count) { $_SESSION['sejin7940_readed_count'][$document_srl]=="0"; $multi_readed_count = 0; } if( ($addon_info->multi_use=="admin" || $addon_info->multi_use=="all") && $logged_info->is_admin=="Y" ) $readed_up = "Y"; // 관리자는 예외 else if ( $addon_info->multi_use=="all") { if($multi_limit && $multi_readed_count >0 && $multi_readed_count < $multi_limit) { $readed_up = "Y"; } elseif(!$multi_limit) { $readed_up = "Y"; } } // 랜덤 조회수 증가 기능 사용 if($logged_info->is_admin=="Y") { $random_max = $addon_info->random_max_admin; if(!$random_max) $random_max=1; if($random_max>20) $random_max=20; // 관리자시 최대값 20으로 제한 $random_min = $addon_info->random_min_admin; if(!$random_min) $random_min=1; if($random_max<$random_min) $random_min = $random_min; } else { $random_max = $addon_info->random_max; if(!$random_max) $random_max=1; if($random_max>10) $random_max=10; // 일반회원의 경우 최대값 10으로 제한 $random_min = $addon_info->random_min; if(!$random_min) $random_min=1; if($random_max<$random_min) $random_min = $random_min; } // 랜덤 증가 or 중복 조회로 랜덤증가시 if ( $random_max>1 && (($addon_info->random_use=="admin" && $logged_info->is_admin=="Y") || $addon_info->random_use=="all")) { if($readed_up=="Y") $update_readed_count = rand ($random_min, $random_max); elseif(!$multi_readed_count) $update_readed_count = rand ($random_min, $random_max)-1; // 첫 조회시엔 view 이후에 조회수 1증가되기에 } // 중복 조회수 증가 - 1씩 증가시 elseif ($readed_up=="Y") { // 첫 조회시엔 이 애드온을 쓸 필요가 없기에 중복인 경우에만 적용 $update_readed_count = 1; } //애드온 시작 조건 설정 if($called_position == 'before_module_proc' && $this->act=='dispBoardContent' && $document_srl && $update_readed_count) { $args->document_srl = $document_srl; if($update_readed_count==20) executeQuery('addons.sejin7940_readed_count.updateReadedCount20', $args); elseif($update_readed_count==19) executeQuery('addons.sejin7940_readed_count.updateReadedCount19', $args); elseif($update_readed_count==18) executeQuery('addons.sejin7940_readed_count.updateReadedCount18', $args); elseif($update_readed_count==17) executeQuery('addons.sejin7940_readed_count.updateReadedCount17', $args); elseif($update_readed_count==16) executeQuery('addons.sejin7940_readed_count.updateReadedCount16', $args); elseif($update_readed_count==15) executeQuery('addons.sejin7940_readed_count.updateReadedCount15', $args); elseif($update_readed_count==14) executeQuery('addons.sejin7940_readed_count.updateReadedCount14', $args); elseif($update_readed_count==13) executeQuery('addons.sejin7940_readed_count.updateReadedCount13', $args); elseif($update_readed_count==12) executeQuery('addons.sejin7940_readed_count.updateReadedCount12', $args); elseif($update_readed_count==11) executeQuery('addons.sejin7940_readed_count.updateReadedCount11', $args); elseif($update_readed_count==10) executeQuery('addons.sejin7940_readed_count.updateReadedCount10', $args); elseif($update_readed_count==9) executeQuery('addons.sejin7940_readed_count.updateReadedCount9', $args); elseif($update_readed_count==8) executeQuery('addons.sejin7940_readed_count.updateReadedCount8', $args); elseif($update_readed_count==7) executeQuery('addons.sejin7940_readed_count.updateReadedCount7', $args); elseif($update_readed_count==6) executeQuery('addons.sejin7940_readed_count.updateReadedCount6', $args); elseif($update_readed_count==5) executeQuery('addons.sejin7940_readed_count.updateReadedCount5', $args); elseif($update_readed_count==4) executeQuery('addons.sejin7940_readed_count.updateReadedCount4', $args); elseif($update_readed_count==3) executeQuery('addons.sejin7940_readed_count.updateReadedCount3', $args); elseif($update_readed_count==2) executeQuery('addons.sejin7940_readed_count.updateReadedCount2', $args); elseif($update_readed_count==1) executeQuery('addons.sejin7940_readed_count.updateReadedCount1', $args); $_SESSION['sejin7940_readed_count'][$document_srl]=$multi_readed_count+1; // 동일글 조회수 } elseif($called_position == 'before_module_proc' && $this->act=='dispBoardContent' && !$update_readed_count && !$multi_readed_count) { $_SESSION['sejin7940_readed_count'][$document_srl]=$multi_readed_count+1; // 동일글 조회수 } ?>multi_limit); $multi_readed_count = $_SESSION['sejin7940_readed_count'][$document_srl]; if(!$multi_readed_count) { $_SESSION['sejin7940_readed_count'][$document_srl]=="0"; $multi_readed_count = 0; } if( ($addon_info->multi_use=="admin" || $addon_info->multi_use=="all") && $logged_info->is_admin=="Y" ) $readed_up = "Y"; // 관리자는 예외 else if ( $addon_info->multi_use=="all") { if($multi_limit && $multi_readed_count >0 && $multi_readed_count < $multi_limit) { $readed_up = "Y"; } elseif(!$multi_limit) { $readed_up = "Y"; } } // 랜덤 조회수 증가 기능 사용 if($logged_info->is_admin=="Y") { $random_max = $addon_info->random_max_admin; if(!$random_max) $random_max=1; if($random_max>20) $random_max=20; // 관리자시 최대값 20으로 제한 $random_min = $addon_info->random_min_admin; if(!$random_min) $random_min=1; if($random_max<$random_min) $random_min = $random_min; } else { $random_max = $addon_info->random_max; if(!$random_max) $random_max=1; if($random_max>10) $random_max=10; // 일반회원의 경우 최대값 10으로 제한 $random_min = $addon_info->random_min; if(!$random_min) $random_min=1; if($random_max<$random_min) $random_min = $random_min; } // 랜덤 증가 or 중복 조회로 랜덤증가시 if ( $random_max>1 && (($addon_info->random_use=="admin" && $logged_info->is_admin=="Y") || $addon_info->random_use=="all")) { if($readed_up=="Y") $update_readed_count = rand ($random_min, $random_max); elseif(!$multi_readed_count) $update_readed_count = rand ($random_min, $random_max)-1; // 첫 조회시엔 view 이후에 조회수 1증가되기에 } // 중복 조회수 증가 - 1씩 증가시 elseif ($readed_up=="Y") { // 첫 조회시엔 이 애드온을 쓸 필요가 없기에 중복인 경우에만 적용 $update_readed_count = 1; } //애드온 시작 조건 설정 if($called_position == 'before_module_proc' && $this->act=='dispBoardContent' && $document_srl && $update_readed_count) { $args->document_srl = $document_srl; if($update_readed_count==20) executeQuery('addons.sejin7940_readed_count.updateReadedCount20', $args); elseif($update_readed_count==19) executeQuery('addons.sejin7940_readed_count.updateReadedCount19', $args); elseif($update_readed_count==18) executeQuery('addons.sejin7940_readed_count.updateReadedCount18', $args); elseif($update_readed_count==17) executeQuery('addons.sejin7940_readed_count.updateReadedCount17', $args); elseif($update_readed_count==16) executeQuery('addons.sejin7940_readed_count.updateReadedCount16', $args); elseif($update_readed_count==15) executeQuery('addons.sejin7940_readed_count.updateReadedCount15', $args); elseif($update_readed_count==14) executeQuery('addons.sejin7940_readed_count.updateReadedCount14', $args); elseif($update_readed_count==13) executeQuery('addons.sejin7940_readed_count.updateReadedCount13', $args); elseif($update_readed_count==12) executeQuery('addons.sejin7940_readed_count.updateReadedCount12', $args); elseif($update_readed_count==11) executeQuery('addons.sejin7940_readed_count.updateReadedCount11', $args); elseif($update_readed_count==10) executeQuery('addons.sejin7940_readed_count.updateReadedCount10', $args); elseif($update_readed_count==9) executeQuery('addons.sejin7940_readed_count.updateReadedCount9', $args); elseif($update_readed_count==8) executeQuery('addons.sejin7940_readed_count.updateReadedCount8', $args); elseif($update_readed_count==7) executeQuery('addons.sejin7940_readed_count.updateReadedCount7', $args); elseif($update_readed_count==6) executeQuery('addons.sejin7940_readed_count.updateReadedCount6', $args); elseif($update_readed_count==5) executeQuery('addons.sejin7940_readed_count.updateReadedCount5', $args); elseif($update_readed_count==4) executeQuery('addons.sejin7940_readed_count.updateReadedCount4', $args); elseif($update_readed_count==3) executeQuery('addons.sejin7940_readed_count.updateReadedCount3', $args); elseif($update_readed_count==2) executeQuery('addons.sejin7940_readed_count.updateReadedCount2', $args); elseif($update_readed_count==1) executeQuery('addons.sejin7940_readed_count.updateReadedCount1', $args); $_SESSION['sejin7940_readed_count'][$document_srl]=$multi_readed_count+1; // 동일글 조회수 } elseif($called_position == 'before_module_proc' && $this->act=='dispBoardContent' && !$update_readed_count && !$multi_readed_count) { $_SESSION['sejin7940_readed_count'][$document_srl]=$multi_readed_count+1; // 동일글 조회수 } ?>
라고 화면에 깔려있고, 아래 오류코드 정보가 있어 같이 남겨드립니다.
[서버 오류 내역]
TypeError #0 "implode(): Argument #1 ($array) must be of type array, string given" in layouts/widein/layout.html on line 129
배열이 아닌 변수에 배열 함수를 사용하려 하고 있습니다. 오래된 자료에서 종종 사용하던 코딩 방식이나 최근 PHP에서는 허용되지 않으니, 에러 메시지에 포함된 파일명과 줄 번호를 참고하여 수정하세요.
layouts/widein/layout.html:129
[129 라인 코드를 살펴봤습니다]
<!--@else-->
<div class="cameron-container boxs">
<div class="cameron-row boxs">
<div class="cameron-md-12 boxs">
<block cond="$layout_info->gallery_mid">
{@
$args=new stdClass();
$args->site_srl=$site_srl;
$args->mid=$layout_info->gallery_mid;
$msrlq_gallery=executeQueryArray('module.getModuleSrlByMid', $args);
$msrl_gallery=$msrlq_gallery->data;
}
<block loop="$msrl_gallery=>$key,$val">{@ $msrli_gallery[$key]=$msrlq_gallery->data[$key]->module_srl; }</block>
{@ $msrls_gallery=implode(',',$msrli_gallery)} //129번 라인
</block>
<img class="zbxe_widget_output" widget="cameronGallery" skin="wideinGallery" content_type="document" module_srls="{$msrls_gallery}" use_limit="N" order_target="{$layout_info->gallery_order_target}" order_type="{$layout_info->gallery_order_type}" gallery_title="{$layout_info->gallery_title}" option_view="thumbnail,title<!--@if($layout_info->gallery_voted!="off")-->,voted_count<!--@endif-->" thumbnail_width="262" thumbnail_height="175" thumbnail_type="crop" list_count="{$layout_info->gallery_count}" cols_list_count="4" subject_cut_size="24" show_browser_title="N" show_category="N" show_comment_count="Y"|cond="$layout_info->gallery_comment!='off'" category_range="all" hyperlink="Y" hyperlink_src="article" view_permission="list" view_secret_document="all_user" />
</div>
</div>
</div>
<!--@endif-->
혹시나 해서 implode 관련하여 검색을 해보았고, 해결법이 몇가지 나와 있는듯 했으나, 제 짧은 지식으로는 이해를 못했습니다. 어떻게 수정을 하면 좋을까요?
$msrli_gallery ?? []
처럼 변수가 null인 경우 빈 배열을 넘겨줌으로써 오류 자체는 숨길수 있지만 궁극적인 원인은 해당 변수에 null이 들어가는것이므로 다른부분을 봐야 합니다.
코드상 해당 변수는 레이아웃 설정에 입력한 mid 기준 모듈 srl을 가져오는것으로 보이는데 존재하지 않는 mid 입력시 반환값이 비면서 문제가 될수 있어 보입니다.