我无法理解CakePHP控制器中会话的奇怪行为:
class UsersController extends AppController
{
public $helpers = array('Session');
public $components = array('Session');
public function Do() {
$this->Session->write('Foo', 'Bar');
$_SESSION['Foo2'] = 'Bar2';
echo $this->Session->read('Foo');
echo $_SESSION['Foo2'];
}
};
第一个echo不输出,第二个输出 - Bar2
。为什么native $_SESSION
可以工作但是通过CakePHP接口它不可用?
答案 0 :(得分:1)
(这个答案假设是CakePHP 1.3)
您在评论中说,您的配置文件中Session.save
设置为php
。在同一文件中,您应将Session.start
设置为true
。如果不这样做,您有两种选择:
Session.start
设置为true
,或$this->Session->activate()
。参考文献:
http://book.cakephp.org/1.3/en/view/1465/Session(奇怪的是,Session.start
和activate()
仅针对会话助手进行了记录,但它们也适用于该组件)。
http://book.cakephp.org/1.3/view/931/CakePHP-Core-Configuration-Variables