Ошибка командной строки Codeigniter – PHP Неустранимая ошибка: Class 'CI_Controller' не найден

После выполнения инструкций, приведенных здесь: http://ellislab.com/codeigniter/user-guide/general/cli.html Я не могу запустить тестовый скрипт через командную строку.

Мой контроллер находится в / var / www / mysite / application / controller /

class Tools extends CI_Controller { public function message($to = 'World') { echo "Hello {$to}!".PHP_EOL; } } 

В моем браузере я могу получить доступ

 http://mysite/tools/message/ben 

И функция правильно выводит «Hello ben»

С терминала я должен иметь возможность запускать:

$ php index.php tools message "Ben"

Мой терминал должен печатать: «Hello Ben»

Однако я получаю следующую ошибку:

PHP Неустранимая ошибка: класс 'CI_Controller' не найден в /var/www/mysite/system/core/CodeIgniter.php в строке 233

Мой сервер довольно стандартный; ubuntu LAMP. Codeigniter тоже довольно стандартный, и у меня нет проблем с запуском не CI-скриптов через командную строку

Мой двоичный файл PHP находится только в / usr / bin / php <- Этот пост предлагает проблему с запуском CI непосредственно из usr / bin / php, однако я не использую общий PHP-сервис, и я не понимаю, почему это повлияет на то, как PHP выполняет скрипт CI.

Любая помощь или просто указание о том, как отладить это, будут очень признательны.

Заранее спасибо.

Solutions Collecting From Web of "Ошибка командной строки Codeigniter – PHP Неустранимая ошибка: Class 'CI_Controller' не найден"

Решено! (отчасти) проблема заключалась в регистрации ошибок CodeIgniters.

В application / config / config.php я изменил следующее свойство config:

 $config['log_threshold'] = 0; 

Это отключает ведение журнала и позволяет выполнить $ php index.php .

Если кто-нибудь может объяснить, почему CI только показывает эту ошибку в CLI PHP, может помочь кому-то еще, кто имеет эту проблему, и нуждается в ее разрешении при регистрации ошибок.

Чтобы решить ошибку «Class» CI_Controller «не найден», попробуйте перейти к Application -> Config -> database.php затем проверьте имя базы данных.

Михану:

У меня была такая же проблема, и примерно через два часа отслеживания кода, чтобы выяснить проблему, кажется, что существует некоторый конфликт с загрузкой CI_Controller при использовании собственной функции PHP load_class.

Я работал над этой проблемой, внося следующие изменения в файл Common.php (взломать, я знаю).

 //$_log =& load_class('Log'); require_once('system/libraries/Log.php'); $_log = new CI_Log(); 

Мои журналы тогда создавались точно так, как я хотел. Надеюсь, этот хак поможет.

Этот сайт говорит, что для запуска codeigniter из командной строки необходимо установить переменную $ _SERVER ['PATH_INFO'].

$ _SERVER ['PATH_INFO'] обычно предоставляется php при создании веб-запроса. Однако, поскольку мы вызываем этот скрипт из командной строки, нам нужно эмулировать эту небольшую часть среды как веб-запрос.

Ответ, предоставленный в этом столбце «Переполнение стека», работал для меня.

Внутри system/core/CodeIgniter.php по строке 75 измените:

set_error_handler('_exception_handler');

чтобы …

set_exception_handler('_exception_handler');

Другие пользователи сообщили, что это дало им лучшую обратную связь, с помощью которой можно было отладить основную проблему, но для меня это фактически полностью устранило проблему.