Как исправить путь 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/');

... в одно из следующих мест (вам решать, какое из них):

  1. изменить основной файл 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/');

Другие вопросы по тегам