cakephp 路由 - pages_controller/home.ctp 错误仅在 debug=0 时 [英] cakephp routing - pages_controller/home.ctp error only on debug=0

查看:11
本文介绍了cakephp 路由 - pages_controller/home.ctp 错误仅在 debug=0 时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当 core.php debug 设置为 1 或 2 并且我浏览到 cakephp 站点的根目录时,我得到了预期的结果,所提供的页面是正确的,即 PagesController default() action -> home.ctp

When core.php debug is set at 1 or 2 and I browse to the root of my cakephp site I get expected result, the page served is correct, ie, PagesController default() action -> home.ctp

但是,如果我将 debug 更改为 0,则会出现以下错误:

However if I change debug to 0 I get the the following error:

错误:请求的地址/"是在此服务器上未找到.

Error: The requested address '/' was not found on this server.

我的 router.php 文件包含:

My router.php file contains:

    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
 * ...and connect the rest of 'Pages' controller's urls.
 */
    Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

我已尝试删除所有缓存文件并删除 CAKE cookie,其他操作在直接访问时按预期工作,例如/user、/groups 等.仅在点击根目录/"时才会出现问题.

I have tried deleting all cache files and removing CAKE cookies, and other actions work as expected when visited directly, eg, /user, /groups, etc. Problem only occurs when hitting the root '/'.

我使用 cakephp 1.3.4 和 ACL + Auth.

I am using cakephp 1.3.4 and ACL + Auth.

编辑 ** 我包含了 pages_controller.php 中 default() 函数的代码

Edit ** I'm including the code for the default() function from pages_controller.php

/**
 * Displays a view
 *
 * @param mixed What page to display
 * @access public
 */
    function display() {

        $path = func_get_args();

        $count = count($path);
        if (!$count) {
            $this->redirect('/');
        }
        $page = $subpage = $title_for_layout = null;

        if (!empty($path[0])) {
            $page = $path[0];
        }
        if (!empty($path[1])) {
            $subpage = $path[1];
        }
        if (!empty($path[$count - 1])) {
            $title_for_layout = Inflector::humanize($path[$count - 1]);
        }
        $this->set(compact('page', 'subpage', 'title_for_layout'));
        $this->render(implode('/', $path));

    }

推荐答案

好吧答案就是这么简单尴尬:home.ctp里面有如下代码:

OK the answer is so simple it is embarassing: in home.ctp there is the following code:

if (Configure::read() == 0):
    $this->cakeError('error404');
endif;

Configure::read() 默认读取 var debug - 因此如果 debug 设置为 0,它会抛出此错误.

Configure::read() by default read var debug - therefore it throws this error if debug is set to 0.

感谢本杰明让我走上正轨.蛋糕很棒,同时也很令人生气,直到您了解基础知识!

Thanks to Benjamin for putting me on the right track. Cake is wonderful and at the same time infuriating until you know the basics!

这篇关于cakephp 路由 - pages_controller/home.ctp 错误仅在 debug=0 时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆