Session cakePHP会话组件未初始化?

Session cakePHP会话组件未初始化?,session,cakephp,initialization,Session,Cakephp,Initialization,在AuthComponent.php中,我有以下代码: App::uses('Component', 'Controller'); App::uses('Router', 'Routing'); App::uses('Security', 'Utility'); App::uses('Debugger', 'Utility'); App::uses('CakeSession', 'Model/Datasource'); App::uses('BaseAuthorize', 'Controller

在AuthComponent.php中,我有以下代码:

App::uses('Component', 'Controller');
App::uses('Router', 'Routing');
App::uses('Security', 'Utility');
App::uses('Debugger', 'Utility');
App::uses('CakeSession', 'Model/Datasource');
App::uses('BaseAuthorize', 'Controller/Component/Auth');
App::uses('BaseAuthenticate', 'Controller/Component/Auth');

class AuthComponent extends Component {
// ...
public $components = array('Session', 'RequestHandler');
// ...
public function login($user = null) {
        $this->_setDefaults();

        if (empty($user)) {
            $user = $this->identify($this->request, $this->response);
        }

        if ($user) {
            $this->Session->renew();    // fails here (Session==null)
            $this->Session->write(self::$sessionKey, $user);
        }
        return $this->loggedIn();
    }
// ...
}

当它尝试执行续订时,由于$this->Session为空,它将失败并出现一个PHP致命错误。这个组件的初始化是自动的还是我在什么地方丢失了代码?我应该注意到,这段代码以前一直在工作,没有已知的问题。有什么想法吗?

问题差不多解决了。基本上,代码中任何地方的语法错误都可能导致这种情况发生。甚至是与失败代码完全无关的逻辑错误。(我非常喜欢这里的蛋糕)。因此,在程序另一部分的另一个文件中的某个地方,从单个变量名中删除了一个“s”,这导致另一个cake组件中的会话组件无法初始化。我也不相信,但我亲眼看到了。

调试($this->Session->read())的输出是什么,如果将其放在login()方法的第一行中?您是否使用
App::uses('Component','Controller')加载组件类?我假设没有输出,因为$this->Session==null。通常,我总是将所有必要的包放在AppController中。在您的情况下是
会话
。所以,我不需要再做了。在组件文件中,我声明为
App::uses('component','Controller')。然后,
$this->Session->
可以在我的项目中工作。请参阅上面的代码编辑以包括“App::uses”行。一位同事说$this->Session应该由cakePHP初始化,但似乎没有人知道它在哪里、如何以及为什么会失败。除了由$this->Session为null引起的PHP致命错误之外,没有生成任何错误。