1

使用 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

4 回答 4

3

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

就我而言,事实证明我已经删除了/application/controllers/目录。因为这个目录总是空的,被各个模块中的控制器取代,我(错误地)认为“整理一下”就可以了。

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

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

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

所以这个场景的简单修复是......把/application/controllers/目录放回去。

于 2014-10-28T16:40:07.060 回答
0

这可能是几件事:

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

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

于 2012-03-14T01:28:53.550 回答
0

我有同样的问题和改变和分别$this->class在和功能类似,$this->method$class$methodset_classset_methodMy_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
}
于 2015-09-07T05:14:25.890 回答
0

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

于 2015-11-20T16:01:20.577 回答