CakePHP会话被写入/ tmp /而不是/ app / tmp / sessions /

时间:2014-08-20 04:37:47

标签: cakephp

这里类似的简单但没有答案的问题: cakephp session no new files in tmp/sessions

我在本地WAMP服务器上运行Cake 2.4.x.我的phpinfo()显示了 c:/ wamp / tmp 的session.save_path。我已经验证了这一点,登录会话当前有在c:/ wamp / tmp /中创建的会话文件。

我尝试转换为使用蛋糕会话处理。根据{{​​3}},使用' cake'会话处理 - 将会话保存为app / tmp / sessions中的文件。如果主机不允许您在自己的家庭目录外写字,这是一个不错的选择。

所以我把这段代码放在我的Core.php

    Configure::write('Session', array(
        'defaults' => 'cake'
    ));

问题是我仍然没有看到任何出现在我的app / tmp / sessions目录下的内容,但我仍然看到在我的c:\ wamp \ tmp目录中创建了会话文件。

问题: 如何让Cakephp开始将会话写入应用程序目录?

干杯 凯文

2 个答案:

答案 0 :(得分:3)

通过创建2个cakephp教程博客重新开始并为可怕的会话共享并排测试它,我意识到以下代码在相应的cakephp安装app / tmp / sessions文件夹中创建会话文件。

Configure::write('Session', array(
    'defaults' => 'cake'
));

但由于它不适合我现有的应用程序,我只能得出结论,我现有的应用程序是问题所在。

在所有安装上查看phpinfo()也告诉我,cakeblog教程成功地覆盖了php.ini中的session.save_path值,更简单的是我的实际cakephp应用程序具有相同的本地session.save_path主会话值.save_path值(来自php.ini)。 这意味着我使用蛋糕会话的core.php设置被覆盖了!!!!!

经过数小时的调查后,我找到了罪魁祸首。

我的app / webroot / index.php中有一行代码,我在几个月前插入了。

session_start();

我插入的session_start()基本上是用原始的php.ini设置覆盖了我的cake core.php设置。这个" session_start()"我放在那里最初是为了克服一个登录循环错误,我用IE和Bluehost.com作为主机。我评论过该行和会话文件开始出现在app / tmp / sessions文件夹中。

HALLELUJAH!

答案 1 :(得分:1)

我第一次看到这个问题。你能测试一下:

Configure::write('Session', array(
    'defaults' => 'php',
    'ini' => array(
        'session.cookie_path' => '/app/tmp/sessions'
    )
));

book cake