2012-02-24 106 views
1

我使用HMVC扩展CodeIgniter有一个奇怪的错误。在本地主机上它运行良好,并在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} 任何人都有这个问题?解决这个问题的解决方案是什么?codeigniter hmvc扩展路由错误

回答

0

这可能是几件事情:

  1. )检查您的配置文件,看看有什么配置[“BASE_URL”]设置为,也可能是你的开发环境之间的不匹配(如“本地主机” )和您的生产环境(例如“http://www.example.com”)

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

3

我有这个相同的问题,也使用HMVC架构。这是我为他人的利益而提出的解决方案。

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

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

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

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

因此,针对此方案的简单修复方法是...将目录返回到/application/controllers/

+0

感谢这是我的问题,我添加了控制器文件夹,并解决了 – Dev01 2015-04-23 09:01:00

+0

我得到同样的问题无法解决,请帮助 – 2016-04-08 18:43:26

0

我有同样的问题,并在My_Router class像分别改变$this->class$this->method$class$methodset_classset_method功能,

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

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