php - Symfony2 没有正确保存 session

标签 php session symfony

我在使用 Symfony 在每个页面加载时创建一个新 session 而不是跨请求传输数据时遇到问题。 config.yml 中 session 部分的 auto_start 设置为 false,常规 php session 工作正常。只有在 symfony 中运行时我才遇到问题。

例如,我创建了测试 Action :

public function sessionTestAction()
{

    $s_Response = '<html><head></head><body><p>Foo</p></body></html>'; //Initialize response and headers
    $a_Headers = array();
    $i_StatusCode = 200;


    $oSession = $this->get('session');
    var_dump($oSession->all());

    if(!$oSession->has('Test'))
    {
        $oSession->set('Test', 'Bar');
    }

    $oSession->save();
    return new Response($s_Response, $i_StatusCode, $a_Headers);
}

预期的操作是,在第一个页面加载时,var_dump 不会产生任何结果,而在任何后续执行中,它将包含 Test=>Bar。但是,它永远不会跨请求获取该数据。

此外,它为每个请求创建一个新的 session ID。

我正在使用 Symfony v2.0.15 和 PHP v5.4

有人有什么想法吗?

编辑:

我觉得我取得了一些进步。我对测试操作进行了以下更改:

public function sessionTestAction()
{

     //Initialize response and headers
    $oRequest = $this->get('request');
    $a_Headers = array();
    if (isset($oRequest->headers->all()['cookie']))
    {
        $a_Headers['Set-Cookie'] = $oRequest->headers->all()['cookie'];
    }
    $i_StatusCode = 200;


    $oSession = $oRequest->getSession();
    $oSession->start();
    $s_Response = print_r($oSession->all(), true);
    if(!$oSession->has('Test'))
    {
        $oSession->set('Test', 'Bar');
    }

    $oSession->save();
    $oResponse = new Response($s_Response, $i_StatusCode, $a_Headers);
    return $this->render('Bundle:Default:index.html.twig', array('response' => $s_Response), $oResponse);
}

twig 文件只有 {{response|raw}}。它现在为 3 个请求中的 2 个请求举行 session 。然而,在第三次请求时,它被清除了。

最佳答案

原来的问题是,有人在 app.php 运行时添加了一行来设置 session cookie,我猜他不知道 symfony 自己处理 session 。问题解决了。

关于php - Symfony2 没有正确保存 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639240/

相关文章:

java - session.get() 在 hibernate 状态下返回 null

php - CodeIgniter 正在数据库中生成多个 session 。为什么?

symfony - 使用 Phpunit : InvalidArgumentException: Unreachable field 进行功能测试

php - JMSTranslationBundle 未提取 'placeholder' 元素

php - Laravel 5 递归函数多对多自引用模型

php - SimpleXML 不返回属性

php - 格式化mysql查询日志文件输出

php - 自定义错误模板引发 fatal error

php - Laravel 阻止特定路由的数据库访问

symfony - 在configureDatagridFilters中创建自定义类型字段 - Sonata Admin