【问题标题】:Symfony2 Session - cannot find valueSymfony2 会话 - 找不到价值
【发布时间】:2014-11-26 10:26:11
【问题描述】:

我确信这个问题只是由于错过了配置参数,并且对此有一个简单的答案,但这让我发疯了。在我们的开发机器上一切正常,但在我们的测试服务器上,我们遇到了以下问题......

我们有一个 Symfony2(2.5.7 版)应用程序。控制器设置会话变量来保存实体的 ID。然后应用程序触发 Ajax 请求,接收请求的控制器使用会话变量来决定发送回什么。

在主控制器中,我们有(在检查 $page 是一个有效实体之后)

$this->get('session')->set('pageId', $page->getId());

然后在处理 ajax 的控制器中,我们有

$pageId = $this->get('session')->get('pageId');

在加载主控制器时,我可以看到会话 cookie 已设置,并且它具有“pageId”的预期值。我可以看到会话的详细信息存储在服务器上的 app/session 目录中,因此我非常确定会话设置正确。此文件夹的权限是正确的,因此允许 apache 对其进行读写。但是,Ajax 控制器报告 $pageId 为假。如果我得到会话的 ID;

$session = $this->get('session');
$session->start();
$sessionId = $session->getId();

我可以看到会话的 ID 与 Ajax 请求发送的 cookie 中的值相匹配,并且与 app/session 目录中名为“sess_{sessionId}”的文件相匹配。

我错过了什么?

【问题讨论】:

  • 你试过$this->getRequest()->getSession();吗?
  • 抱歉,从 Symfony 2.4 开始,getRequest() 已被弃用。将其用作控制器方法的参数:public function myAction(Request $request)

标签: symfony


【解决方案1】:

事实证明,手动删除 app/session 目录中的所有文件解决了这个问题。我不知道为什么,但它确实解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2013-01-17
    • 2015-02-26
    相关资源
    最近更新 更多