我使用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}
还有其他人有这个问题吗?解决这个问题的解决方案是什么?
答案 0 :(得分:3)
我有同样的问题,也使用HMVC架构。这是我的解决方案,为了他人的利益。
就我而言,事实证明我删除了 / application / controllers / 目录。因为这个目录总是空的,被各个模块中的控制器所取代,所以我(错误地)认为将它整理起来会很好。
实际上,MX路由在它为路由器创建的路径中引用它来查找模块;
APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'
所以../部分是正确的。我怀疑你的本地环境是Windows(就像我的一样),它设法以某种方式绕过这个破碎的路径,这是Linux无法做到的。
因此,针对此方案的简单修复是......将 / application / controllers / 目录放回原位。
答案 1 :(得分:0)
可能有几件事:
)检查配置文件并查看配置['base_url']的设置,可能是您的开发环境(例如“localhost”)与您的生产环境(例如“http:/”)不匹配/www.example.com“)
)仔细检查您的routes.php文件,并确保将默认页面控制器设置为控制器。然后三重检查以确保拼写匹配!
答案 2 :(得分:0)
我遇到了同样的问题,并分别在$this->class
和$this->method
函数$class
和$method
更改了set_class
和set_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重新创建或上传到某些服务器,则可能会删除空文件夹。因此,您应该将一些文件添加到"控制器"文件夹中。