CI 묻고 답하기

제목 코어 확장문제..ㅜㅜ 계속 안되네요
카테고리 CI 2, 3
글쓴이 소연신 작성시각 2017/02/23 12:26:19
댓글 : 20 추천 : 0 스크랩 : 0 조회수 : 19698   RSS

구글에서 보니 이런 문제가 꽤 있었던 모양인데..

function __autoload($class) {
    if (substr($class,0,3) !== 'CI_') {
        if (file_exists($file = APPPATH . 'core/' . $class . '.php')) {
            include $file;
        }
    }
}

 

-------

$hook['pre_system'] = array( 'class' => '', 'function' => 'autoload', 'filename' => 'autoload.php', 'filepath' => 'hooks', 'params' => '' );

function autoload() { spl_autoload_register(function($class) { if(strpos($class,'CI_') !== 0 && file_exists(APPPATH.'core/'.$class.EXT)) { require_once APPPATH . 'core/' . $class . EXT; } }); }

config.php에 내용 추가해 주는 부분이나..훅으로 오토로드 하는 것도 해봤는데.. 다 안되네요.. 미치겠어요ㅜㅜ 혹시 이 문제 해결 하신 분 안 계신가요ㅜ

 다음글 코드이그나이터 성능 (4)
 이전글 코어 확장 후 컨트롤러 못 찾는 문제입니다ㅜ (23)

댓글

카카메론바 / 2017/02/23 12:35:27 / 추천 0
// Load the base controller class
	require_once BASEPATH.'core/Controller.php';

	/**
	 * Reference to the CI_Controller method.
	 *
	 * Returns current CI instance object
	 *
	 * @return CI_Controller
	 */
	function &get_instance()
	{
		return CI_Controller::get_instance();
	}

	if (file_exists(APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'))
	{
		require_once APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php';
	}

왜 로드가 안되는지를 알아보시려면... 아무래도 코어파일에서 찍어보셔야 할것 같습니다.

system/core/Codeigniter.php 파일 라인 357번째줄쯤에 위와 같은 코드에서 확장 컨트롤러 로드하는 부분이 걸리는지 안걸리는지 찍어보시면서 테스트 하시면 될것 같습니다.

카카메론바 / 2017/02/23 12:36:43 / 추천 0
// Load the base controller class
	require_once BASEPATH.'core/Controller.php';

	/**
	 * Reference to the CI_Controller method.
	 *
	 * Returns current CI instance object
	 *
	 * @return CI_Controller
	 */
	function &get_instance()
	{
		return CI_Controller::get_instance();
	}

    #### 이부분 조건문에 테스트를 해보시면 될것 같습니다.
	if (file_exists(APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'))
	{
		require_once APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php';
	}
카카메론바 / 2017/02/23 12:40:22 / 추천 0

만약 위에서 파일이 있는지 없는지 체크하는 부분이

APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'

경로가 정확한지를 찍어보세요.^^

echo APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php' . '<br>';
	if (file_exists(APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'))
	{
	    echo 'found';
		require_once APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php';
	}
    exit;

대충 이런식으로 찍어보시면서 경로나 기타 다른 문제들을 살펴보세요...

 

한대승(불의회상) / 2017/02/23 12:46:56 / 추천 0
흠... 안되는 경우는 처음 보내요. 카카메론바님 의견대로 확인을 해 보셔야 겠습니다.
카카메론바 / 2017/02/23 13:01:43 / 추천 0

경로가 문제가 없다면... 이미 확인하셨을테지만 차근 차근 다시 검사해보세요^^

1. application/core 폴더 권한, 폴더 내에 MY_Controller.php 파일 권한 확인

2. MY_Controller.php 파일 대소문자 확인

3. config.php 파일에 subclass_prefix 부분의 'MY_' 부분 확인

4. config.php 파일 인코딩 확인

5. 파일이 업로드되어 있는지 확인

확장클래스가 로드가 안되는 경우는 왠만해서는 발생을 하지 않는데.... 

만약 확장클래스가 로드가 안된다면... 이건 codeigniter 에 문제라기보다 오히려 PHP에 문제가 있다고 봐야 할꺼에요.

왜냐면 확장 클래스를 로드하는건 위와 같이 아주 단순하고 심플합니다...

위의 모든 설정이 완벽하다면 PHP 에서 해당 경로를 달리 해석하고 있거나 PHP가 불러오지 못하는 경우라고 생각합니다.

Codeigniter.php 파일에서 확장코어 불러오는 부분의 값을 찍어서 자세히 살펴보시길 바랄게요^^

혹 이상이 없다면 realpath로 해당 부분을 다시 찍어서 그 값도 정확히 확인해 보세요~

도움이 되어 드리고 싶은데 해결이 될지 모르겠습니다.ㅎㅎ

샤오란 / 2017/02/23 13:09:09 / 추천 0
역시 저희 포럼은 관심과 사랑이 넘치는군요~ ^^ 이 관심과 사랑을 힘입어 문제가 해결되었으면 정말 좋겠습니다.!
소연신 / 2017/02/23 13:45:35 / 추천 0

@카카메론바

답변 감사합니다! 점심먹고 온 사이에ㅜ

일단 경로 찍어보니 경로는 잘 나옵니다.C:\work3\pickdol\application\core/MY_Controller.phpfound

ㅜ 

한대승(불의회상) / 2017/02/23 13:55:15 / 추천 0
@소연신 윈도에서는 문제가 없다고 하신거 같은데요. 
카카메론바 / 2017/02/23 13:55:48 / 추천 0

어라... 적용하시려는 서버가 윈도우 서버이신가요?

 

카카메론바 / 2017/02/23 13:59:22 / 추천 0

파일로드가 됐는데..... 클래스를 못찾는다면...

혹시 파일에서 네임스페이스 use 키워드를 사용하신가요?

만약 use  키워드를 사용하고 계시다면...

class Chatting extends \MY_Controller {
    public function __construct()
    {
        parent::__construct();
    }
    
    .....
}

저렇게 해주셔야 할것 같은데....

근데 왠지 네임스페이스 사용 안하고 계신것 같은데.....

만약 안되신다면 prefix를 다른 값으로 바꿔서 테스트도 해보세요.

MY_  말고 예를 들어 MM_ 이런식으로요..;;

소연신 / 2017/02/23 13:59:29 / 추천 0

@카카메론바 @한대승

아 죄송합니다 정신이 없어서 지금 다시 확인해보고 있습니다ㅜ

소연신 / 2017/02/23 14:07:55 / 추천 0

@카카메론바

경로가 아예 안뜨네요... 없으면 없는대로 출력하게 했는데도 안 뜨고 여기가 문제인거 같습니다ㅜ

카카메론바 / 2017/02/23 14:09:13 / 추천 0

안뜨고 있다면 PHP에 문제가 있는것 같은데..

PHP version 이 어떻게 되실까요???

소연신 / 2017/02/23 14:10:51 / 추천 0

@카카메론바

현재 7.0.13 쓰고 있습니다.

카카메론바 / 2017/02/23 14:15:09 / 추천 0

어라.. 환경도 저랑 비슷하신거 같은뎅;;

경로 출력하시고 exit 같은걸로 중지 하셨는데도 안나오시나요?

https://open.kakao.com/o/s5SQ15s