저두 정리가 안되서 질문을 하다보니 다소 문장이 이상 할 수 있으니, 유념하시어 봐주시기 바랍니다 ^^
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;
}
}
}
?>
|
말하신대로라면 어느 한쪽에서는 동작한다는 뜻인데 ..
동작하는 PHP버젼이 정확이 어떻게 되는지 알아야 할 것 같네요 ^^