Extra Form
PHP PHP 7.2
CMS Rhymix

widgets/newest_comment/newest_comment.class.php:61

 

 

if($args->mid_list) {
    $mid_list = explode(",",$args->mid_list);
    if(count($mid_list)) {
        $module_srls = $oModuleModel->getModuleSrlByMid($mid_list);
        if(count($module_srls)) $args->module_srls = implode(',',$module_srls);
        else $args->module_srls = null;
    } 
}

 

중략....

 

if(count($mid_list)==1) $widget_info->module_name = $mid_list[0]; // 61번 라인입니다.

 

 

 

너무 다양한 에러가 발생하고 있어 질문이 많아질 것 같아 죄송합니다.

  • profile
    $widget_info 변수가 배열이거나 오브젝트여야 한다는거네요.
    그래야 $widget_info->module_name 이런식으로 변수를 넣을수 있죠
    $widget_info 변수 초기화가 없거나 가져온 값이 없거나 그런듯?
  • profile

    if(count($변수)) 문법에서 워닝이 발생하는 것은 $변수에 배열이 아닌 엉뚱한 것을 넣었기 때문입니다.

    예전에는 아무 거나 던져줘도 다 세어줬지만, PHP 7.2 이상은 배열이거나 특수한 Countable 클래스여야만 합니다.

     

    일반적인 XE 서드파티 자료 기준, 구체적인 원인은

        70% 변수가 비어 있는 경우 (널값, false, 빈 문자열 등)

        30% 비어 있지는 않은데, 배열이 아닌 것이 들어 있는 경우 (오브젝트, 숫자 등)

    정도로 나눌 수 있습니다.

     

    위의 코드는 어떤 경우인지 알 수 없지만, 일단 70%의 가능성을 제거하기 위해

        if(count($변수))

        if(count($변수) == 1)

    라고 되어 있는 부분을

        if($변수 && count($변수))

        if($변수 && count($변수) == 1)

    로 바꿔보시기 바랍니다.

    변수가 비어 있으면 앞의 조건에 걸리니까, count는 체크할 필요도 없겠지요.

     

    단, if(!count($변수)) 또는 if(count($변수) == 0) 이런 식으로

    배열이 비어 있는지 체크하는 코드라면 위와 같은 트릭을 사용할 수 없겠지요?

    그럴 때는 if(is_array($변수) && count($변수) == 0) 이렇게

    배열인지 아닌지 체크하는 것이 좀더 정확합니다.

  • profile profile

    if($mid_list && count($mid_list)==1) $widget_info->module_name = $mid_list[0];
    요렇게 고쳐 놓고 모니터링 해보겠습니다. 위젯들이 캐시 때문에 바로 확인이 안되네요.

     

    모니터링 해봤는데 이제 워닝 메시지 안뜨네요.