0

几天前我开始学习 kohana,使用 Zend Framework,我的学习体验似乎很快,直到遇到几个问题。

首先,我在 Windows 7 中启动了该项目(使用 linux ubuntu 12.04 进行双启动)。在我开始使用 kendo ui 向管理应用程序添加更多页面之前,我知道每个链接都很好。我添加了一些路由来处理子文件夹中的控制器并使用表单的查询字符串处理 url ?bla=dkll&second=lkdjf(由 kendo 网格用于根据用户与网格的交互发送未知数量的参数)。

第一个问题:在 Windows 下,我可以访问除根目录之外的任何 url,/例如localhost/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

问题:

是与第一个问题相关的第二个问题(显然除了 '/' not found 一个)我在 ubuntu mod_rewrite 上启用了并且 kohana 安装页面都是绿色的。

是否还有其他我忘记启用的设置在不在 ubuntu 上的 windows php (xampp) 中启用?

我的 .htaccess/logs/boostrap 在这里

感谢您阅读本文并提供帮助

4

3 回答 3

2

我和你有同样的问题,我的 kohana 在我的 Windows 机器上运行良好。但是当我将它迁移到 Ubuntu 时,我遇到了路由问题。这是我的错,我忘了编辑我的 apache conf。您可以查看 /etc/apache2/sites-enabled/000-default 中的 conf 文件

   
目录 /var/www/>
   选项索引 FollowSymLinks MultiViews
   AllowOverride 无
   命令允许,拒绝
   允许所有人
/目录>

将 'AllowOverride None' 编辑为 'AllowOverride All' 并重新启动您的 apache webserver 。

像魔术一样工作!

于 2012-09-18T14:10:25.883 回答
2

我假设您的应用程序的根文件夹是“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',
    ));

您添加的其他路由应位于默认路由之上。

于 2012-07-19T11:00:01.270 回答
1

添加到digby 的注释所有类文件名和目录名都是小写的。

我注意到了一些小事情,但没有什么可以解释您遇到的问题:

  • 查询字符串不应该也不应该用于路由到操作。在控制器中使用 $this->request->query() 来使用 GET 值。
  • 斜线在 URI 的开头和结尾被剪掉,所以注释掉的 'def' 路由中的可选 / 是无用的。
  • 第二次定义 kendogrid 路线会覆盖旧路线。并不是说它真的很重要,因为它们是相同的,所以为什么不删除一个呢?

您还希望路由什么控制器?目前应该是Controller_...嗯...我用我的小眼睛窥探一个错字!“订阅者”而不是“订阅者”。所以目前你将被路由到 Controller_Subcribers::index()。

如果你想要 Controller_Useraccess::index() 而不是 Controller_Subscribers::index() (假设你修正了错字)删除第一个 kendogrid 路由,因为 'kendogrid' 和 'default' 都匹配一个空的 URI。

PS。我假设你使用 3.2

于 2012-07-24T15:00:15.480 回答