Php 将Symfony从2.1升级到2.3:会话从何处开始?

Php 将Symfony从2.1升级到2.3:会话从何处开始?,php,session,symfony,migration,symfony-2.3,Php,Session,Symfony,Migration,Symfony 2.3,我是symfony 2.1中的symfony项目 当我迁移到2.3时,似乎有一个服务在之前启动了会话。 所以我的代码无法修复会话id 有没有办法找到以前使用过哪个服务会话?我不知道答案,但我的想法是创建一个请求侦听器,将其优先级设置为高值,并尝试在那里设置id。例如: 服务.yml request_listener: class: My\Bundle\Service\Listener\RequestListener arguments: [ @session]

我是symfony 2.1中的symfony项目

当我迁移到2.3时,似乎有一个服务在之前启动了会话。 所以我的代码无法修复会话id


有没有办法找到以前使用过哪个服务会话?

我不知道答案,但我的想法是创建一个请求侦听器,将其优先级设置为高值,并尝试在那里设置id。例如:

服务.yml

request_listener:
    class:  My\Bundle\Service\Listener\RequestListener
    arguments: [ @session]       
    tags:
        - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 9 }
和请求侦听器:

use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class RequestListener
{
    protected $session;

    function __construct(Session $session)
    {
        $this->session = $session;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
            $this->session->setId(xx);
    }
}

谢谢大家的回答和评论


事实上,Symfony 2.3添加了新的侦听器,而这正是问题的根源。

方法
setId
不做你想做的事情吗?否。我收到“无法更改活动会话的ID”错误。如果我删除setId()行,我会得到“启动会话失败:已由PHP启动($\u session is iset)”错误。在
PHP.ini
@forgottenbas中,set
session.auto\u start=0
已完成(默认情况下已完成)。我很确定我们使用的其中一个捆绑包和/或促使我们这样做。但我不知道如何找到它(在哪里)。。。特别是由于symfony 2.3(和/或我们对2.3进行的修改),因为我在使用symfony 2.1时没有遇到这个问题,您在哪一刻修改了会话?使用这种侦听器,它不会改变第一条评论中的行为。通过设置id(控制器中的id),我得到“无法更改活动会话的id”,如果我删除控制器上的设置id,我得到“启动会话失败:已由PHP启动($\u会话为iset)”。所有这些都有这个请求侦听器和正确的会话id。嗯,我不明白你所说的“所有这些都有这个请求侦听器和正确的会话id”:-s。无论如何,我知道很难改变Sf处理会话的方式。