Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

 

이슈사항

- xe에서 Rhymix 설치 이후 admin 메뉴 편집시 아래와 같이 에러 페이지가 호출됩니다.

- 그 상태에서 아래 파일만 기존 파일로 교체하면 페이지는 표시됩니다.

  /modules/menu/menu.admin.controller.php

 

다만 Rhymix에서 받은 파일로 교체하면 동일하게 에러 발생합니다.

Rhymix 파일에서 무엇을 수정해야하나요?

 

 

 

서버 오류

TypeError #0 "Argument 2 passed to ModuleController::updateModuleMenuSrl() must be of the type int, null given, called in /경로/경로/public_html/modules/menu/menu.admin.controller.php on line 209" in modules/module/module.controller.php on line 774

 

modules/module/module.controller.php:774

 

1.png

  • profile

    메뉴 DB가 살짝 꼬여 있는 상태인 것 같습니다.

    XE에서 별도로 메뉴를 지정하지 않은 게시판이나 페이지들을 모아 두던 unlinked 메뉴가 삭제되었거나,

    라이믹스로 변경하시면서 일부 테이블에 필요한 컬럼들이 추가되지 않았거나...

    메뉴는 사이트마다 워낙 다양한 경우의 수가 있기 때문에,

    어떤 사이트에서는 멀쩡하게 돌아가는데 어떤 사이트에서는 오류가 나기도 합니다.

     

    아무튼 근본적인 원인을 찾아 해결하기 위해서는,

    에러가 나는 위치보다는 조금 앞으로 나와서 수정을 시도해 보면 좋겠습니다.

    콜스택이 상당히 깊은 곳에 들어가서 에러가 났거든요. 어떤 경로를 거쳐 거기까지 갔는지 찾아야 합니다.

     

    예를 들어 menu.admin.controller.php 122줄을 보면

    $output = $this->updateLinkModule($unlinked_modules, $unlinked_menu_srl);

    라는 코드가 있을 텐데요,

    이걸 조건문으로 한 번 묶어 보시겠어요?

    if ($unlinked_menu_srl) {

        $output = $this->updateLinkModule($unlinked_modules, $unlinked_menu_srl);

    }

    이렇게요.

    만약 이렇게 했을 때 문제가 해결된다면 한 가지 원인을 의심해 볼 수 있고,

    만약 해결되지 않는다면 그것도 중요한 단서가 됩니다.

  • profile ?
    답변 감사합니다.
    주중에 작업을 하지 못해서 이제서야 해봤는데.. 기존 코드에 이미 아래와 같이 되어있습니다.

    xe에서 라이믹스로 업데이트하면서 db테이블 생성하는 과정이나
    절차는 없기는 했는데..
    혹시 수동으로 추가해야되는 것이 있을까요~?

    if($unlinked_modules)
    {
    $unlinked_menu_srl = $this->getUnlinkedMenu();
    $output = $this->updateLinkModule($unlinked_modules, $unlinked_menu_srl);
    }
  • ? profile

    이미 주위를 둘러싸고 있는 if문은 그대로 두고, $output으로 시작되는 한 줄만 알려드린 대로 또다른 if문으로 묶어 보시기 바랍니다. 아니면 그냥 develop 버전으로 덮어씌워 보세요. 그 사이에 이것저것 많이 수정되었습니다.

  • profile
    사이트맵 메뉴 작업을 하다보니 꼬이더군요. 저도 같은 오류가 나길래 해당 코드 부분 주석 처리 후에 사이트맵이 보이고 난 뒤 몇번 재작업한 뒤 다시 주석 푸니 에러가 없어지더군요;