CI 묻고 답하기

제목 서버 환경 설정에 따라 php 동작에 영향을 줄수 있나요?
글쓴이 똥파리 작성시각 2011/11/04 18:23:22
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 18477   RSS

저두 정리가 안되서 질문을 하다보니 다소 문장이 이상 할 수 있으니, 유념하시어 봐주시기 바랍니다 ^^

ci를 이용하여 사이트를 구축중인데 한가지 이상한 현상이 있어서 질문드립니다.
(전에 한번 올리기 했는데 만족 할 만한 답을 얻지 못해서 --)

동일한 소스를 두개의 리눅스 서버에 업로드 하여 테스트 하였을때 하나의 서버에서는 정상 동작하나,
다른 서버에서는 Call to a member function get_file_info() on a non-object 라고 나옵니다.
 
아래는 해당 문제가 있는 소스의 일부분입니다.
MY_Controller는 사위 CI_Controller를 상속받아 추가 적인 메소드를 정의 한것입니다.

class Api extends  MY_Controller {
  
 function __construct()
 {
  parent::__construct();
 }

 function test9()
 {
  $this->load->model("common_model");
  $aa = $this->common_model->get_file_info("file_info", "2a7cc71d76af6a6ea56cda142a72b71012b6116c");
 }

현재까지 봐서는 load->model 까지는 정상적인 동작을 하고 있는 것으로 보이나,
$CI->$name = new $model();  --- >  여기까지 전달된 변수 값들은 정상적으로 출력됩니다. 경로 정보 이상없고 에러 없고 --

이때 생성된 객체 정보를 test9 함수에서 참조를 못하는 것으로 보입니다.
상위 메소드의 동작은 이상없는데 하위 함수에서 상위에서 생성한 객체를 참조 못하는 현상 인거 같은데
제 짧은 식격으로는 왜 이런 현상이 일어나는지 알 수가 없네요.

이게 프로그램 상의 문제라면 다른 서버에서도 동작을 하지 않아야하는데 동작을 하니 참
그럼 문제는 서버 환경 설정이 php 메모리 참조등에 영향을 주는 것 같은데
그런부분이 있을까요???

참고로 Ci는 2.0.2를 사용하고 있으며,
아래는 MY_Controller의 내용입니다. 

<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
 public $viewData;
 
    function __construct()
    {
        parent::__construct();
    }
 /*------------------------------------[function]-------------------------------------
 함수명   - _pageInit()
 작성자   - 원종필(2010/12/08),
 목적     - 뷰처리시 페이지의 레이아웃을 설정해주기 위한 함수
 -------------------------------------------------------------------------------------
   ------------------------------------------------------------------------------------*/ 
 function _pageInit(){
  //func_num_args()
  //func_get_arg()
  //func_get_args()
  $argsNum = func_num_args();
  $args = func_get_args();

  switch($argsNum){
   case 1: $this->_pageInit1($args[0]); break;
   case 2: $this->_pageInit2($args[0], $args[1]); break;
   case 3: $this->_pageInit2($args[0], $args[1], $args[2]); break;
   default:
  }
 }
 
 function _pageInit1($pageInfo){
  if(is_array($pageInfo)){
   foreach($pageInfo as $key=>$value){
    if($value){
     $this->viewData[$key] = $value;
    }
   }
  }elseif(is_string($pageInfo)){
   unset($this->viewData[$pageInfo]);
  }
 }
 
 function _pageInit2($pageName='', $pageValue=''){
  if($pageName && $pageValue){
    $this->viewData[$pageName] = $pageValue;
  }
 }
  
}
?>

 다음글 폼과 관련된 경로 문제 (2)
 이전글 이클립스경로 (2)

댓글

한대승(불의회상) / 2011/11/04 19:20:28 / 추천 0
phpinfo();를 통해서 동작하는 PHP버젼과 동작하지 않는 PHP버젼을 알려주시면 도와 드리는데 도움이 될것 같습니다.
말하신대로라면 어느 한쪽에서는 동작한다는 뜻인데 ..

동작하는 PHP버젼이 정확이 어떻게 되는지 알아야 할 것 같네요 ^^