CI 묻고 답하기

제목 로컬에선 잘 돌아가던 index 메소드가 서버에선 작동이 안되네요
글쓴이 L5vD5 작성시각 2016/07/18 13:20:29
댓글 : 12 추천 : 0 스크랩 : 0 조회수 : 15089   RSS

생성자랑 reamp 메소드는 정상적으로 돌아가는데 index method만 안 돌아가네요. 맨 앞에 대문자 소문자 다 해봐도 이런 증상입니다. 혹시 환경설정으로 바꿔줘야 하나요 아니면 그냥 생성자를 index 메소드처럼 써야하나요?

 다음글 CI /views 에 php 와 일반 html 문서와 ... (2)
 이전글 model에서 데이터를 가져와서 var_dump를 사용... (8)

댓글

L5vD5 / 2016/07/18 13:23:49 / 추천 0
참고로 index/index로 메소드까지 다 지정해줘도 실행이 안되네요 아예 안에있는 메소드들이 전부 실행 안되는것같아요 지정해줘도
kaido / 2016/07/18 13:30:46 / 추천 0

혹시 컨트롤러 파일이 Index.php 입니까?

Index 파일명으로 컨트롤러를 생성 하면 안되는 걸로 기억 합니다.

이유는 객체의 속성 때문에.

L5vD5 / 2016/07/18 14:00:48 / 추천 0

@kaido index.php 컨트롤러 외에도 많은 컨트롤러들이 작동을 안하네요 ㅜㅜ 바꿔봤지만 역시나 ㅜㅜ

확실한 증상은 모든 컨트롤러는 호출이 가능한데 (__remap과 생성자도 같이 호출됨) 모든 메소드가 호출이 불가능한것 같습니다(index 포함)

 

kaido / 2016/07/18 14:27:58 / 추천 0

흠... 골치아프게 되었네요.  메소드 호출 미스는 보통 문법 미스인데...

 

일단 좀 더 자세한 정보가 필요합니다.

 

사용중인 php 버전

os 종류

간략한 실제 사용하신 샘플 코드.

그리고 컨트롤러 파일명.

 

샘플 코드는 전부다는 필요없고 호출 하신 방법만 알수 있게요.

 

L5vD5 / 2016/07/18 14:45:35 / 추천 0

@kaido 5.6.7버전 사용중이구요

호스트 서버는 리눅스로 돌아갑니다


class Index extends CI_Controller{

    function __construct()
    {    
        echo "index 생성자 호출 OS : ".PHP_OS."PHP 버전".PHP_VERSION;
        parent::__construct();
        $this->load->model('Auth_m');
        $this->load->helper('form');
        
    }
/**
* index 메소드 
**/
    function index()
    {
        echo "index 메소드 호출" ;
        
        //echo 'index 함수 실행중';
        if(@$this->session->userdata('logged_in')==TRUE)//로그인 상태면 (session 생기면) project() 실행
        {

            $this->project();
            
        }
        else//로그아웃 상태면 (session 없으면) login() 실행
        {
            $this->login();
        }
    }
    /**
    *사이트 헤더, 푸터
    **/
    public function _remap($method)
    {
        echo "index _remap 호출";
        //헤더 include
         $this->load->view('header_v');

         if(method_exists($this, $method))
         {
             $this->{"{$method}"}();
         }
         //푸터 include
         //$this->load->view('footer_v');
    }
    

파일명은 현재 Index인데 "index 메소드 호출"을 제외하고는 다 뜹니다.

L5vD5 / 2016/07/18 14:46:42 / 추천 0
아 생각해보니 리눅스라는 점을 좀 간과한 것 같습니다 다시 해보고 올려보겠스빈다
kaido / 2016/07/18 15:04:43 / 추천 0

처음에 제가 달은 이유 인거 같습니다.

 

 

Index 파일명으로 컨트롤러를 생성 하면 안되는 걸로 기억 합니다. <---

 

자 재미난 객체 공부의 시간 입니다.

 

Test.php 파일에

calss test {

...

}

만들었습니다.



그럼 객체 test를 만든 것이죠?

그럼 생성자는 어떻게 될까요?

calss test{
public function __construct() {
... 생성자 영역 ...
}
}

그렇죠. 생성자는 저겁니다.

아? 근데 이건 뭘까요?

calss test{

function test() {...}   //이건 뭐죠?
}

그냥 함수요?
아니요. 생성자 입니다. 과거 스타일의 생성자 입니다.

Index 컨트롤러 [즉 index 객체] 의 생성자는 
공교롭게도  function index() {...} 이게 생성자가 됩니다.
그래서 가급적 index 로 파일을 만들지 말라는 것입니다.

 

 

저도 조금 아리까리 한데, 아마 저 이유인걸로 압니다.

kaido / 2016/07/18 15:08:11 / 추천 0

아참 그리고 

 echo "index _remap 호출 == ".$method;  으로 호출해서 정확히 어떤 함수를 호출 하는지 확인해 보세요.

이상하다 싶으면 아예 리맵을 빼고도 테스트해 보시구요.

 

간단한걸 놓치고 계신것 같습니다.

변종원(웅파) / 2016/07/18 15:08:45 / 추천 0
3점대는 파일명 첫자가 대문자이어야 합니다.
L5vD5 / 2016/07/18 15:12:15 / 추천 0

@kaido 만약 아무 메소드 입력 안하면 index가 뜨고 메소드 입력하면 입력한 메소드가 뜹니다.

@변종원(웅파) 2점대로 바꿔서 다시 소문자로 다 바꿔서 해봤는데 역시나 같은 증상입니다

 

L5vD5 / 2016/07/18 15:14:02 / 추천 0
remap을 없애보니 index 메소드가 호출 되네요.. 뭐징
L5vD5 / 2016/07/18 15:41:35 / 추천 0
아 잘 해결됬습니다 ㅜㅜ 아마 index 메소드가 사용하는 세션쪽의 설정을 생략하는 바람에 이렇게 된 것 같습니다.