要在 Yii 中启用 session ,您需要做什么特别的事情吗?
我在使用 Yii 的 CCaptcha 包时遇到了问题。我遇到的最终问题是验证码验证每次都失败,因为之前的验证码字符串没有在页面浏览之间保留。在我的本地环境中一切正常,但在生产服务器上却失败了。
我已将所有内容追溯到 session 。
如果我清除我的 cookie,我可以看到设置了 PHPSESSION
cookie,所以 PHP 正在执行它的工作。
但是如果我把这段代码放到页面中...
$session=new CHttpSession;
$session->open();
header("X-Session: " . $session['testval']. ' at ' . time());
$session['testval'] = time();
...我在我的(工作中的)开发服务器上得到了这个结果:
- 页面 View 1:
X session :1341416149
- 页面 View 2:
X session : 1341416149 在 1341416152
- 页面 View 3:
X session :1341416152 at 1341416163
但是在生产服务器上我得到了这个:
- 页面 View 1:
X session :1341415456
- 页面 View 2:
X session :位于 1341415518
- 页面 View 3:
X session :1341415530
很明显 session 数据没有被保留。有什么想法吗?
最佳答案
我讨厌回答我自己的问题,但就我而言,问题是生产服务器上的 CHttpSession
配置不正确。我不确定 savePath
指向哪里,但是当我将它明确设置为 /tmp
时,我可以看到 session 数据在页面 View 中得到了保留。这是我最终在 /protected/config/main.php
中使用的内容:
// application components
'components'=>array(
'session'=>array(
'autoStart'=>true,
'sessionName'=>'session',
'savePath'=>'/tmp', // this is the default, but still needs to be explicitly set
'timeout'=>1440
),
...
关于php - Yii session 数据不为 CCaptcha 保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11332200/