2012-02-24 105 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重新創建或上傳到某些服務器,則可能會刪除空文件夾。因此,您應該添加一些文件到「控制器」文件夾中。