CodeIgniter CI_Controller не найден - PullRequest
       13

CodeIgniter CI_Controller не найден

2 голосов
/ 16 января 2012

Таким образом, ниже приведен код, который у меня сейчас есть:

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

Это как описано в руководстве пользователя.

Ответы [ 4 ]

4 голосов
/ 09 ноября 2012

Я полагаю, эта ошибка возникает, когда функция библиотеки журнала вызывается до загрузки класса CI_Controller. Это может произойти на ранней стадии процедуры вашего приложения. Поэтому вы должны расширить библиотеку журналов, не используя $this->$CI =& get_instance();.

3 голосов
/ 16 января 2012

Довольно странно. Я только повторил ваш случай (с предоставленной информацией), и у меня не возникло проблем. Но убедитесь в паре вещей:

  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 голосов
/ 27 сентября 2016

В случае, если это кому-нибудь поможет, у меня возникла та же проблема, и я заметил, что она возникла только на URL-адресах, которые содержат +, например, как часть постоянной ссылки.CI вышел из строя;Я предотвратил появление + знаков в URL, и все было хорошо.

0 голосов
/ 01 октября 2012

Попробуйте поместить это вверху MY_Log.php, если вы еще этого не сделали:

<? Php определено ('BASEPATH') ИЛИ завершиться ('Прямой доступ к сценарию запрещен'); </p>

Возможно, ваш класс MY_Log фактически не анализируется php, если он не включен в разделители php. Если это так, то CI увидит файл MY_Log.php и будет ожидать, что CI_Log будет расширен классом, объявленным в MY_Log.php. Но если ваш класс не входит в разделители PHP, CI_Log фактически не будет расширяться, что может привести к странным ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...