codeigniter hmvc扩展路由错误

时间:2012-02-24 10:54:07

标签: php codeigniter hmvc

我使用HMVC扩展名的CodeIgniter有一个奇怪的错误。在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 个答案:

答案 0 :(得分:3)

我有同样的问题,也使用HMVC架构。这是我的解决方案,为了他人的利益。

就我而言,事实证明我删除了 / application / controllers / 目录。因为这个目录总是空的,被各个模块中的控制器所取代,所以我(错误地)认为将它整理起来会很好。

实际上,MX路由在它为路由器创建的路径中引用它来查找模块;

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

所以../部分是正确的。我怀疑你的本地环境是Windows(就像我的一样),它设法以某种方式绕过这个破碎的路径,这是Linux无法做到的。

因此,针对此方案的简单修复是......将 / application / controllers / 目录放回原位。

答案 1 :(得分:0)

可能有几件事:

  1. )检查配置文件并查看配置['base_url']的设置,可能是您的开发环境(例如“localhost”)与您的生产环境(例如“http:/”)不匹配/www.example.com“)

  2. )仔细检查您的routes.php文件,并确保将默认页面控制器设置为控制器。然后三重检查以确保拼写匹配!

答案 2 :(得分:0)

我遇到了同样的问题,并分别在$this->class$this->method函数$class$method更改了set_classset_method My_Router class 1}}喜欢,

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
}

答案 3 :(得分:0)

我也用charliefortune的答案解决了。谢谢。 请注意,如果从.rar重新创建或上传到某些服务器,则可能会删除空文件夹。因此,您应该将一些文件添加到"控制器"文件夹中。