簡體   English   中英

遇到幾個問題kohana框架:在ubuntu 12.04上路由和運行

[英]Running into couple of issues kohana framework: routing and running on ubuntu 12.04

幾天前,我開始學習kohana,在使用Zend Framework之前,我的學習經驗似乎很快,直到遇到了兩個問題。

首先,我在Windows 7中啟動了該項目(使用linux ubuntu 12.04雙重啟動)。 我知道在我開始使用kendo ui將更多頁面添加到管理應用程序之前,每個鏈接都很好。 我添加了兩條路由來處理子文件夾中的控制器,並使用?bla=dkll&second=lkdjf形式的查詢字符串處理url(供?bla=dkll&second=lkdjf網格使用,用於根據用戶與網格的交互來發送未知數量的參數)。

第一個問題 :在Windows下,我將訪問除root /外的任何URL,例如localhost/admin/ (admin是htdocs中的文件夾),它給了我

ERROR: HTTP_Exception_404 [ 404 ]: The requested URL / was not found on this server

83 try
84 {
85 if ( ! class_exists($prefix.$controller))
86 {
87 throw new HTTP_Exception_404('The requested URL :uri was not found on this server.',
88 array(':uri' => $request->uri()));
89 }
90
91 // Load the controller using reflection
92 $class = new ReflectionClass($prefix.$controller);

第二個問題 :在ubuntu下,我不僅遇到相同的第一個問題,而且我什至無法訪問其他urls例如localhost/admin/useraccess/login

問題:

是與第一個有關的第二個問題(顯然是在“ /”未找到的地方),我已經在ubuntu mod_rewrite上啟用了,而kohana安裝頁面全是綠色的。

我還沒有啟用其他設置,但這些設置是在ubuntu上的Windows php(xampp)中啟用的嗎?

我的.htaccess / logs / boostrap在這里找到

感謝您閱讀並幫助

我假設您的應用程序的根文件夾為“ admin”。 在bootstrap.php中,您應該具有:

Kohana::init(array(
    'base_url'      => '/admin',
    'index_file'    => FALSE,
));

同樣在bootstrap.php中,默認路由應該是最后一條路由:

Route::set('default', '(<controller>(/<action>(/<id>)))')
    ->defaults(array(
        'controller' => 'index',
        'action'     => 'index',
    ));

您添加的其他路由應位於默認路由之上。

我也遇到了同樣的問題,我的kohana在Windows機器上運行良好。 但是當我將其遷移到Ubuntu時,路由存在問題。 這很不好,我忘記編輯apache conf。 您可以在/ etc / apache2 / sites-enabled / 000-default中查看conf文件

Directory /var/www/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
/Directory>

將“ AllowOverride None”編輯為“ AllowOverride All”,然后重新啟動apache網絡服務器。

像魔術一樣工作!

添加到digby的注釋中所有類文件名和目錄名均為小寫。

我注意到了一些小問題,但沒有什么可以解釋您遇到的問題:

  • 查詢字符串不應也不應用於路由到操作 在控制器中使用$ this-> request-> query()以使用GET值。
  • 斜杠從URI的開頭和結尾開始被修剪掉 ,因此注釋掉的'def'路由中的可選/是無用的。
  • 第二次定義kendogrid路由會覆蓋舊路由。 既然它們相同就不是真的很重要,那么為什么不刪除一個呢?

您還希望路由哪個控制器? 當前應該是Controller _...嗯...我用小眼睛監視着一個錯字! “承辦人”而不是“訂戶”。 因此,當前您將被路由到Controller_Susbcribers :: index()。

如果您想使用Controller_Useraccess :: index()而不是Controller_Subscribers :: index()(假設您已解決錯字),請刪除第一個kendogrid路由,因為“ kendogrid”和“ default”都匹配一個空URI。

PS。 我假設您使用3.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM