【发布时间】:2012-08-31 08:27:55
【问题描述】:
由于资源消耗较低,我正在从 Apache 转向 nginx。我已经设置了一个安装了 LEMP 堆栈的 Ubuntu 服务器框。将我所有的应用程序转移过来(3 个 CakePHP 2.0.5 应用程序,1 个 Wordpress 安装)后,一切似乎都运行良好,除了一件事 - 当浏览器关闭时,Cake 的 cookie 突然消失。
我创建了一个非常简单的测试 PHP 页面来测试 cookie 是否正常工作,它们实际上是否正常工作,只是在 Cake 中没有。当我关闭浏览器时,Wordpress 也无法记住我。
使用 Chrome 开发者工具,我检查了是否设置了 cookie,如下所示:
到期日期甚至设置为未来一个月,所以我不明白为什么他们不超过浏览器关闭。一旦我启动浏览器并导航到我的应用程序,cookie 现在就消失了:
我注意到的一件事是,当我的应用程序在 Apache 上运行时,您在上面看到的 CAKEPHP cookie 在关闭之前和之后具有相同的值。但是在 nginx 服务器上,每次我关闭并重新打开浏览器时,该 cookie 的值都会有所不同。
我认为这可能与会话有关,所以我检查了core.php 中的会话设置,并设置为让 PHP 进行会话处理:
Configure::write('Session', array(
'defaults' => 'php'
));
我已经检查了我的/tmp 目录并且正在创建会话文件。我尝试将会话处理程序更改为 cake,以便 Cake 将会话存储在其 app/tmp/sessions 目录中,虽然会话将在此目录中成功创建,但我的 cookie 在浏览器关闭时仍然丢失。
之前有没有人经历过 nginx 和 Cake 之间的这种行为,或者对为什么会发生这种情况有任何想法?
【问题讨论】:
标签: php cakephp cookies nginx cakephp-2.0