Php 找不到CodeIgniter CI_控制器

Php 找不到CodeIgniter CI_控制器,php,codeigniter,extend,Php,Codeigniter,Extend,基本上,下面是我现在的代码: 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. *

基本上,下面是我现在的代码:

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
致命错误:在第233行的//system/core/CodeIgniter.php中找不到类“CI_Controller”

《用户指南》就是这样描述的。

很奇怪。我只是复制了你的案例(提供了信息),没有遇到任何问题。但要确保以下几点:

  • 您的文件名为MY_Log.php,位于
    application/libraries/MY_Log.php
  • 该文件扩展父类,在本例中是CI_Log
  • 将控制器中的库称为

    $this->load->library('log');
    $this->log->do_something();
    
    i、 e,不使用“我的日志”,而是使用父库的名称。事实上,您正在扩展它,而不是创建一个不同的,因此CI希望您将其称为与原始版本相同的版本

  • 您的原始文件已正确写入以下行(CI前没有$符号)


  • 我的测试用例和您提供的代码在我的开发机器(Windows7WAMPPHP5.3.8)上运行良好。我将等待更多信息。

    如果您尚未:


    我猜在加载CI_控制器类之前调用日志库函数时会发生此错误。这可能发生在应用程序例程的早期阶段。因此,您应该在不使用
    $this->$CI=&get_instance()的情况下扩展日志库

    如果这对任何人都有帮助,我也遇到了同样的问题,并注意到它只出现在包含
    +
    的URL上,例如作为永久链接的一部分。CI走火入魔;我阻止了
    +
    符号出现在URL中,一切正常。

    您的文件系统中是否有system/core/Controller.php文件?是的,第233行是:return CI_Controller::get_instance();可能是重复的,我自己还没有尝试过,但你确定需要执行get_实例吗?在扩展CI_控制器的一次尝试中,我似乎可以通过$this(即$this->load->vars($data);现成工作)访问CI对象,我得到了“未定义的属性:我的_日志::$load”。愚蠢的图书馆有时让我发疯。没错。2.对的3.事实上,我们正在这样做。4.这是错误的,但没有解决问题。当我把log_treshold调到1时,它就出错了。嗯……你在运行什么CI版本?它是新安装的吗?你在配置中更改了什么吗?你能用一个全新的CI副本重现这个问题吗?我在配置中更改了很多东西,但只更改了默认值和选项。基本url、索引页面、url后缀、加密密钥、sess\U cookie\U名称,并打开全局xss\U筛选。就这样。让我尝试新安装。新安装的结果相同。CodeIgniter 2.1.0我没有主意了…我无法在现有安装或新安装上重现该问题;甚至不知道你还能提供什么样的信息。你收到同样的警告吗?你在加载一个常规库时得到它吗?
    $this->CI =& get_instance();