Как исправить путь PHP для плагина codeIgniter?
Я сам пытался установить Rediska (клиент Redis PHP) в мое приложение codeigniter, но безуспешно. Я получу безумные суммы ошибок "Нет такого файла или каталога" при попытке поместить их в папку плагинов Codeigniter:
Серьезность: Предупреждение
Сообщение: require_once(Rediska/Connection/Exception.php) [function.require-Once]: не удалось открыть поток: нет такого файла или каталога
Имя файла: Rediska/Connection.php
Номер строки: 6
Кому-нибудь удалось установить Rediska в Codeigniter до меня?
Из руководства по установке Rediska видно, что установка проста и проста: http://rediska.geometria-lab.ru/documentation/get-started/
Поскольку сейчас речь идет только об ошибках на основе пути, я предполагаю, что должна быть какая-то удобная настройка PHP, которую я могу изменить, чтобы она работала?
Спасибо!
3 ответа
Это простая проблема, связанная с include_path. Другими словами, PHP не может автоматически загружать файлы, которые пытается использовать библиотека, которую вы пытаетесь использовать (в вашем случае Rediska).
Я предположил, что вы извлекли содержимое каталога библиотеки Rediska в каталог system/application/library в Code Igniter (чтобы в библиотеках dir у вас были каталоги Rediska.php и Rediska). Вам нужно будет вставить следующий код:
ini_set('include_path', ini_get('include_path').';'.APPPATH.'libraries/');
... в одно из следующих мест (вам решать, какое из них):
- изменить основной файл index.php перед вызовом функции require_once в самом низу файла
- в (каждый) контроллер, где вы хотите использовать Rediska
- измените файл Rediska.php и добавьте эту строку в самый верх файла (первая строка после
Затем вы сможете загружать rediska, используя следующие строки (из вашего контроллера или даже из какой-либо другой библиотеки):
$this->load->library('rediska');
$rediska = new Rediska();
В качестве альтернативы, вместо ручной загрузки библиотеки, вы можете автоматически загрузить библиотеку Rediska. См. http://codeigniter.com/user_guide/general/autoloader.html для получения дополнительной информации.
Надеюсь, поможет.
Только что заметил заметку от Фила Стерджена о том, что плагины становятся избыточными.....
Сейчас я работаю над внедрением Rediska в библиотеку CI, но для общего использования вы можете использовать следующее для включения файлов на основе пути приложения CI.
include(APPPATH.'libraries/rediska/Exception.php');
Включил бы Exception.php в system/apps / library /rediska/
Я не получил решение ini_set для работы, но вариант этой строки прекрасно работает: set_include_path(get_include_path() . PATH_SEPARATOR . APPPATH.'libraries/');