2012-01-16 95 views
2

所以基本上,下面的代碼是我現在所擁有的:笨是CI_Controller沒有找到

class MY_Log extends CI_Log { 

    /** 
    * Variable storing the CodeIgniter instance. 
    * 
    * @access private 
    * @since v0.1.0.0 
    */ 
    private $CI; 

    /** 
    * Constructor for later use by internal 
    * methods. 
    * 
    * @access public 
    * @since v0.1.0.0 
    */ 
    public function __construct() 
    { 
     // Extend the parent logging. 
     parent::__construct(); 

     $this->$CI =& get_instance(); 
    } 
} 

我碰到下面的錯誤;

Fatal error: Class 'CI_Controller' not found in /<deleted>/system/core/CodeIgniter.php on line 233 

這是有點用戶指南如何描述它。

+0

您的文件系統中是否存在system/core/Controller.php文件? – dakdad 2012-01-16 10:47:11

+0

是的,第233行是: 返回CI_Controller :: get_instance();的 – Roel 2012-01-16 10:49:06

+0

可能重複[笨:類「是CI_Controller」未找到(http://stackoverflow.com/questions/6758681/codeigniter-class-ci-controller-not-found) – cweiske 2012-01-16 10:49:58

回答

3

很奇怪。我只是複製你的情況(提供的信息),我沒有遇到任何問題。但要的幾件事情肯定:

  1. 你的文件名爲MY_Log.php,以及位於application/libraries/My_log.php
  2. 文件擴展父類,在這種情況下CI_Log
  3. 您調用庫您的控制器爲

    $this->load->library('log'); 
    $this->log->do_something(); 
    

    即,不使用「My_log」而是使用父庫的名稱。事實上,你延長它,而不是創建一個不同的人,所以CI要你叫它原來一樣

  4. 你的原始文件有以下行正確地寫入(不CI前的$符號)

    $this->CI =& get_instance(); 
    

我的測試案例與您的代碼提供的作品在我的開發機器(Windows 7的WAMP PHP 5.3.8)的罰款。我會等待更多的信息。

+0

1.這是正確的。 2.正確。 3.確實如此。 4.有錯,但沒有解決問題。 只要將log_treshold設置爲1,就會出錯。 – Roel 2012-01-16 11:43:57

+0

呃...您正在運行什麼CI版本?這是一個全新的安裝?你在配置中改變了一些東西嗎?您是否可以使用CI的全新副本重現此問題? – 2012-01-16 11:49:16

+0

我在配置中改變了很多東西,但只有默認值和選項。 base_url,index_page,url_suffix,encryption_key,sess_cookie_name並打開global_xss_filtering。就是這樣。讓我試試全新安裝。 – Roel 2012-01-16 11:53:35

0

嘗試把這個在MY_Log.php的頂部,如果你還沒有準備好?

< PHP的定義(「基本路徑」)或exit(「沒有直接的腳本允許訪問」);

這有可能是你的類MY_Log實際上沒有被PHP解析,如果它不是在PHP定界符包括在內。如果是這樣的話,那麼CI會看到文件MY_Log.php,並期望CI_Log被MY_Log.php中聲明的類擴展。但是,如果你的類不在PHP分隔符中,CI_Log實際上不會被擴展,這可能會導致奇怪的錯誤。

3

我想,當被加載是CI_Controller上課前被稱爲日誌庫函數出現此錯誤。這可能發生在應用程序的早期階段。所以你應該擴展日誌庫而不使用$this->$CI =& get_instance();

0

如果這有助於任何人,我有同樣的問題,並注意到它發生只對其中所含的一個+的URL,例如作爲永久鏈接的一部分。 CI去了;我阻止了+符號出現在網址中,並且一切正常。