CodeIgniter: невозможно загрузить запрошенный класс

В моем поле WAMP я сделал следующее:

  1. Добавлен файл с именем /application/libraries/Foo.php
  2. Foo.php — это класс, и его имя — Foo.
  3. В /application/config/autoload.php я добавил $autoload['libraries'] = array('foo');

Все работает нормально. Когда я загружаю в свой ящик LAMP, я получаю следующую ошибку:

Unable to load the requested class: foo

Разрешение /application/libraries/Foo.php — 0755. Владелец тот же, что и у остальных файлов CI. Если убрать foo из автозагрузки, проблема исчезнет.

Любые идеи, что может быть не так?


person StackOverflowNewbie    schedule 06.11.2011    source источник


Ответы (3)


В Windows капитализация в путях не имеет значения. В линуксе так.

При автозагрузке используйте "Foo", а не "foo".

Я верю, что это поможет.

Я думаю, что это работает, когда вы убираете его из автозагрузки, потому что codeigniter достаточно умен, чтобы вычислить заглавные буквы в пути, а классы не зависят от регистра в php.

person evan    schedule 06.11.2011
comment
я думаю, что есть некоторые ошибки в документах по зажиганию кода о случае - person Tom; 13.02.2012
comment
Была такая же проблема. В автозагрузке у меня был «oauth2», но я изменил на «OAuth2», и это сработало. Спасибо. - person gelviis; 11.08.2012
comment
в Linux что такое FOO? Это модель? или класс или контроллер представления или что-то еще? Пожалуйста, будьте конкретны. - person Pratik; 23.04.2015

У меня была аналогичная проблема при развертывании из OSx на моем локальном сайте на моем живом сайте Linux.

Он отлично работал в OSx, но в Linux я получал:

An Error Was Encountered

Unable to load the requested class: Ckeditor

Проблема заключалась в том, что пути Linux, по-видимому, чувствительны к регистру, поэтому мне пришлось переименовать файлы моей библиотеки с «ckeditor.php» на «CKEditor.php».

Я также изменил свой вызов загрузки, чтобы он соответствовал регистру:

$this->load->library('CKEditor');
person Ian    schedule 27.04.2017

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

Ex.

Имя файла: csvsample.php

class csvsample {

}
person Janzell Jurilla    schedule 01.10.2013