질문/조언질답게시판

나의 메뉴 500에러

Extra Form
PHP PHP 5.5
CMS XpressEngine
URL https://xetown.com/tips/784922

https://xetown.com/tips/784922

 

레이아웃 소스에 위젯 삽입 500에러 발생 또는 위젯을 직접 추가하면 삽입이 안되는 문제 겪으신 분 계신가요?

 

1. 애드온을 모두 해제

2. 기본 레이아웃 변경 

3. XE 새로 설치한 사이트에서 테스트

 

나의 메뉴 위젯 버전별로도 전부 테스트 했지만, 500에러가 발생되는데, 비슷한 경험 하신 분 없나요?

 

 

  • profile
    500 에러 = 서버의 에러 로그를 확보하세요. 라는 뜻입니다.
    500이라는 숫자 자체는 거의 모든 PHP 에러에서 튀어나오기 때문에 쓸모있는 단서가 아닙니다.
  • profile profile

    Parse error: syntax error, unexpected '[' in /widgets/pr_favorite/pr_favorite.class.php on line 365
    에서 발생이 되네요.

     

    if($val['list'])
                    {
                        $node[$node_srl] = ['node_srl' => $node_srl, 'is_use' => $is_use, 'child' => array()];
                        $this->arrangeMenuList($val['list'], $data, $node[$node_srl]['child']);
                    }
                    else
                    {
                        $node[$node_srl] = ['node_srl' => $node_srl, 'is_use' => $is_use];
                    }

     

    를 주석처리 하니 정상적으로 출력은 되는데, 별문제 없을까요?

  • profile profile

    해당 부분의 소스를 보니 PHP 5.4 이상 버전에서만 지원되는 문법으로 작성되어 있네요. 질문에서는 PHP 5.5라고 하셨는데, 혹시 5.3이 아닌지 XE 관리자 화면 하단의 서버환경 확인 기능을 사용하여 정확히 확인해 보시기 바랍니다. 호스팅 업체에 따라서는 PHP 버전 변경을 신청해도 제대로 적용되지 않는 경우가 종종 있어요.

    일단 땜빵하시려면 로그에 나오는 파일 365번째 줄(거의 끝부분이네요)에서
        ['node_srl' => $node_srl, 'is_use' => $is_use, 'child' => array()];
    를 아래와 같이 바꾸시면 될 거예요.
        array('node_srl' => $node_srl, 'is_use' => $is_use, 'child' => array());
    몇 줄 아래에도 비슷한 것이 또 보이는데 거기도 마찬가지로 [ ... ]를 array( ... )로 수정해 주시고요.

  • profile profile

    php 버전을 다른곳과 햇갈렸네요. 확인해보니 5.3.3 버전이네요.
    답변주신 코드로 변경하니 정상적으로 노출됩니다. 진작에 질문할걸 그랬네요. 감사합니다.
    혹시 지금 서비스 되고 있는 서버에 php 버전을 높이면 문제가 될까요? 

    (가성 서버 사용중이라 호스팅 업체가 아닌 직접 버전을 높여야합니다.)

  • profile profile
    잘못 건드리면 난리나요...
  • profile profile
    ㅎㅎ 네 ~

서버에 요청 중입니다. 잠시만 기다려 주십시오...