ошибка маршрутизации расширения codeigniter hmvc - PullRequest
1 голос
/ 24 февраля 2012

У меня странная ошибка с CodeIgniter, использующим расширение HMVC.На localhost он работает нормально, а на сервере Linux я получаю эту ошибку Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid., даже если все настроено нормально.Я сделал несколько основных отладок CodeIgniter и обнаружил, что базовый метод fetch_directory () возвращает ../modules/{controller}/{action} instead of modules/{controller}/{action} У кого-нибудь еще была эта проблема?Какое решение это исправить?

Ответы [ 4 ]

3 голосов
/ 28 октября 2014

У меня была такая же проблема, также с использованием архитектуры HMVC. Вот мое решение для пользы других.

В моем случае оказалось, что я удалил каталог / application / controllers / . Поскольку этот каталог всегда пуст, его заменяют контроллеры в отдельных модулях, и я (ошибочно) подумал, что было бы неплохо «привести его в порядок».

На самом деле, маршрутизация MX ссылается на путь, который он создает для маршрутизатора, чтобы найти модули;

APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'

Так что ../ часть верна. Я подозреваю, что ваша локальная среда - это Windows (как и моя), которой удалось как-то обойти этот сломанный путь, так что Linux не может.

Итак, простое исправление для этого сценария ... положить каталог / application / controllers / обратно.

0 голосов
/ 20 ноября 2015

Я тоже решил с ответом charliefortune.Благодарю.Помните, что если вы воссоздаете из .rar или загружаете на определенные серверы, пустые папки могут быть удалены.Поэтому, возможно, вам следует добавить некоторые файлы в папку «controllers».

0 голосов
/ 07 сентября 2015

У меня была та же проблема, и я изменил $this->class и $this->method на $class и $method соответственно в set_class и set_method функции в My_Router class как,

public function set_class($class) {
    $this->class = str_replace('-', '_',$class).$this->config->item('controller_suffix');
                                   //---^ remove $this from here
}

public function set_method($method) {
    $this->method = str_replace('-', '_',$method);
                                    //---^ remove $this from here
}
0 голосов
/ 14 марта 2012

Это может быть несколько вещей:

  1. ) Проверьте ваш файл конфигурации и посмотрите, на что настроен config ['base_url'], это может быть несоответствие между вашей средой разработки (например, "localhost") и вашей производственной среде (например, "http://www.example.com")

  2. ). Дважды проверьте ваш файл rout.php и убедитесь, что контроллер страницы по умолчанию настроен на контроллер. Затем выполните тройную проверку, чтобы убедиться, чтосовпадения написания!

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