CI 묻고 답하기

제목 Trying to get property 'load' of non-object 에러 문의
카테고리 CI 2, 3
글쓴이 민속 작성시각 2019/07/25 14:55:47
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 12400   RSS

안녕하세요.  

다국어치리 오류관련 문의 드립니다.

hooks을 이용하여 다국어처리를 하였습니다.

로컬에서는 (apache+ mysql +CI) 정상적으로 작동이 되는데

apache서버에 올린 후 아래와 같은 오류가 납니다.

헬퍼를 불러오지 못해서 에러가나는건지 잘 모르겠습니다.

도움좀 부탁드립니다.

hooks/MultiLanguageLoader.php 파일

----------------------------------------------------

  class MultiLanguageLoader

  {

      function initialize() {

          $ci =& get_instance();

          // load language helper

          $ci->load->helper('language'); <== 이부분 에러...

          $siteLang = $ci->session->userdata('site_lang');

          if ($siteLang) {

              // difine all language files

              $ci->lang->load('header',$siteLang);

          } else {

              // default language files

              $ci->lang->load('header','kr');

          }

      }

  }


첨부파일 코드이그나이터.PNG (27.2 KB)
 다음글 한글이동주소 현상대해 (1)
 이전글 페이지네이션이 이상하게 보이는 현상

댓글

kaido / 2019/07/25 15:39:44 / 추천 0

후킹 시점이 언제이죠?

컨트롤러 로드 이전이면 헬퍼 자체가 로드되지 않을 수 있습니다.

민속 / 2019/07/25 15:57:25 / 추천 0
우선 답변 감사드립니다. 제가 ci를 접한지 얼마되지를 않아서요~ 후킹시점 확인은 어떻게 확인해야 할까요?
pre_controller를 말씀하시는건가요?? 그렇다면 로컬에서는 작동하는데 서버에서 위의 오류가 나는건 무엇을 유추해 봐야 될까요?? ㅠ
kaido / 2019/07/25 18:33:47 / 추천 0

넵. 후킹 포인트가 컨트롤러를 로드하기 전입니다.

저도 테스트를 해봐야겠지만, CI 이라는 물건은 기본적으로 컨트롤러가 메인입니다.

정확히는 loder calss가 잔뜩 로드해서 컨트롤러에서 사용가능하게끔 DI 형태로 꾹꾹 채워넣습니다.

컨트롤러가 로드되지 않는다는 의미는 CI 의 전반적인 기능이 사용 불가능이라는 의미와 같습니다.

 

로컬서버와 라이브서버가 다르다면 로그 파일을 확인해 보시는것이 우선일것 같습니다.

 

다만 보편적으로 로컬 서버에서 작동되고 라이브서버에서 작동 안되는 이유는 파일명 규칙에 어긋나서가 90%입니다.

윈도우에서는 무시하다가 리눅스 환경에서 대소문자를 가리기 때문에, 카멜케이스 규칙을 꼭 지켜주셔야 합니다.

파일명 첫번째는 영문대문자! 말이죠.

kaido / 2019/07/25 18:56:06 / 추천 0

일단 실제 실험해보니 pre_controller 에서는 helper가 로드 안되는게 맞습니다.

그 다음 단계인 post_controller_constructor 으로 컨트롤러가 일단 로드 되어야 helper도 로드가 가능 합니다.