Authentication 使用CakePHP Auth时出现未定义的方法stdClass::user()错误

Authentication 使用CakePHP Auth时出现未定义的方法stdClass::user()错误,authentication,cakephp,Authentication,Cakephp,我是Cakephand的新手,我正在使用Auth组件构建一个站点。有几次我试着用这个组件做一些导致错误的事情 Fatal error: Call to undefined method stdClass::user() in /ftphome/site/app/controllers/users_controller.php on line 395 在本例中,它所指的行是 $this->User->read(null, $this->Auth->user('id'));

我是Cakephand的新手,我正在使用Auth组件构建一个站点。有几次我试着用这个组件做一些导致错误的事情

Fatal error: Call to undefined method stdClass::user() in /ftphome/site/app/controllers/users_controller.php on line 395
在本例中,它所指的行是

$this->User->read(null, $this->Auth->user('id'));
当我将代码恢复到错误之前的状态时,这个错误并没有消失,我似乎只能通过删除服务器上的一些文件来消除它(我不确定是哪些文件,当我尝试删除
tmp
目录中的所有文件时,错误仍然存在,因此我删除了整个站点,并从最新的svn版本恢复

在这种情况下,我认为是我在
app\u controller

class AppController extends Controller {
    function beforeRender() {
        $this->set('test', $this->Auth->user());
    }
}
这是我从这条线复制的

上一次,我在更新数据库中的用户后,试图更新身份验证用户详细信息,从而导致了此问题

我可以看到我以某种方式从Auth对象中删除了user对象,但我不明白为什么我需要删除站点中的文件才能将其取回,或者上面的代码是如何删除它的-任何帮助都将不胜感激

编辑

在我上面提到的案例中,问题似乎是我复制到我的
app/controllers
目录中的
app\u controller.php
文件。仅使用带有空类声明的文件就会导致此错误-有人能提供进一步的见解吗

进一步编辑


我意识到我有点傻,这个问题是因为我把
app\u controller.php
放在
/app/controllers/app\u controller.php
中,而
/app/app\u controller.php
中已经有一个了-谢谢Andy的输入,这有助于我更多地了解正在发生的事情。

这个错误通常是错误当类实例(在您的例子中是Auth实例)已序列化到磁盘,然后在另一个请求中重新读取/反序列化,但尚未加载类定义(即Auth)时引发,因此PHP将其创建为“stdClass”(标准类)

当您删除站点文件时,您正在删除会话存储(IIRC,它是CakePHP应用程序中的缓存文件夹),因此在下一个请求中,将从头创建一个新会话

自从我上次使用CakePHP(我切换到Zend)已经有一段时间了,所以我不记得Cake是否包含使用_自动加载函数所需的文件


在那个邮件列表帖子上,有人说你可以在视图中使用$this->Auth->user(),但在控制器中,你可以使用$session->read('Auth.user')获取用户组件。不确定区别是什么,可能$this->Auth是一个视图帮助程序,因此在控制器中不可用?

通常抛出?您可以提供任何引用吗?这可能是PHP、mod_PHP、Apache、APC或类似程序中的错误。