在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致命错误。这个组件的初始化是自动的还是我在某处丢失了代码?我应该注意,此代码以前一直没有已知问题。有什么想法吗?
答案 0 :(得分:0)
问题解决了,有点儿。基本上,代码中任何地方的任何语法错误都可能导致这种情况发生。甚至是与失败的代码完全无关的逻辑错误。 (真的喜欢这里的蛋糕)。所以,在程序另一部分的另一个文件的某个地方,完全是一个'从单个变量名称中删除,这导致另一个蛋糕组件中的Session组件无法初始化。我也不相信,但我亲眼看到了它。