2013-06-03 123 views
0

我很難過這個。CodeIgniter擴展核心控制器

我的CodeIgniter應用程序在本地WAMP服務器上設置,一切都很好。我的所有類都擴展了我的控制器(MY_Controller)

但是,當應用程序位於基於Linux的實時環境中時,會引發MY_Controller類不存在的錯誤。

我忘了配置變量的地方或類似的東西與應用程序/核心文件夾的路徑?

我找過其他線程在Google上有同樣的問題,發現一個解決方案,適用於大多數人使用parent::Controller();而不是parent::__construct(),但這並不能解決這個問題。

+0

你確定你的控制器是否正確放置在應用/核心,以正確的文件名,類名和擴展語句? –

+0

是的,它是在正確的文件夾中,正確的文件名(MY_Controller.php)和類名(MY_Controller),並且在本地WAMP服務器上正常工作,在基於Linux的服務器上完全相同的代碼(減去一些配置常量)返回此錯誤。 我暫時通過在所有控制器中包含核心控制器來解決這個問題,但它並不理想。 – Ryan

+0

然後想一想這一段時間。它*應該*工作...另外,父:: Controller();是parent :: __ construct(),afaik的別名。它不應該影響功能。 –

回答

2

有可能文件名的大小寫不正確(例如:My_controller而不是My_Controller),並且您的在線環境區分大小寫,並且您的本地環境是case_insensitive。我已經有了這個問題很多

+0

哦,是的,我認爲你釘了這一個。 WAMP是基於Windows的,對吧?所以它不會在乎你使用的是什麼文件名。 –

+0

這可能是 - 但是,我的標準控制器有小寫的文件名和大寫的類名(例如firstcontroller.php是FirstController類),那麼爲什麼這隻會影響核心控制器呢? – Ryan

+0

不,如果您在上面評論中的名稱完全按照您在項目中的名稱進行編寫,那麼您的答案是正確的。 –

0

對不起復活舊的帖子,但這個問題困擾了我一段時間。

我想我會添加此鏈接:codeigniter MY_Controller not found

只是在情況有一個可憐的靈魂是誰撞了頭了桌子,他們還沒有碰到過上述職務之前。

由於馬克西姆莫林和菲爾鱘魚:

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