Symfony2 PHP 5.4.4无法更改活动会话的ID

时间:2013-04-10 10:04:32

标签: php session symfony

目前,我们在Symfony2中安装了我们的Web应用程序,我们发现阻塞问题。

  • linux Debian Wheezy
  • PHP 5.4.4
  • Symfony版本2.1.10-DEV - app / dev / debug

异常的致命错误:

  

供应商/ symfony的/ symfony的/ SRC / Symfony的/组件/ HttpFoundation /会话/存储/代理/ AbstractProxy.php   抛出\ \ LogicException('无法更改活动的ID   会话&#39);

堆栈追踪:

  

在kernel.root_dir / cache / dev / classes.php第484行 - +               公共函数setId($ id)               {                   if($ this-> isActive()){                       抛出new \ LogicException('无法更改活动会话的ID');                   }                   SESSION_ID($ ID);       在AbstractProxy - > setId(' 09g5hbsvg1apk8d32k52l19rr5')       在第208行的kernel.root_dir / cache / dev / classes.php中 - +       在NativeSessionStorage - > setId(' 09g5hbsvg1apk8d32k52l19rr5')       在kernel.root_dir / cache / dev / classes.php第780行 - +       在会话 - > setId(' 09g5hbsvg1apk8d32k52l19rr5')       在/home/wwwmain/www_v5/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/TestSessionListener.php   在第54行 - +       在TestSessionListener - > onKernelRequest(object(GetResponseEvent))       at call_user_func(array(object(TestSessionListener),' onKernelRequest'),object(GetResponseEvent))       在/home/wwwmain/www_v5/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/ContainerAwareTraceableEventDispatcher.php   在第139行 - +       在ContainerAwareTraceableEventDispatcher - > doDispatch(array(array(object(ProfilerListener),' onKernelRequest'),   array(object(TestSessionListener),' onKernelRequest'),   array(object(SessionListener),' onKernelRequest'),   array(object(RouterListener),' onKernelRequest'),   array(object(LocaleListener),' onKernelRequest'),   数组(对象(防火墙),' onKernelRequest'),   array(object(RequestListener),' onKernelRequest'),   array(object(TwigExtension2),' onKernelRequest'),   array(object(RequestListener),' onKernelRequest')),' kernel.request',   对象(GetResponseEvent))       在kernel.root_dir / cache / dev / classes.php第4781行 - +       在EventDispatcher - > dispatch(' kernel.request',object(GetResponseEvent))       在kernel.root_dir / cache / dev / classes.php第4999行 - +       在ContainerAwareEventDispatcher - > dispatch(' kernel.request',object(GetResponseEvent))       在/home/wwwmain/www_v5/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/ContainerAwareTraceableEventDispatcher.php   在第78行 - +       在ContainerAwareTraceableEventDispatcher - > dispatch(' kernel.request',object(GetResponseEvent))       在kernel.root_dir / bootstrap.php.cache第1412行 - +       在HttpKernel - > handleRaw(对象(请求),' 1')       在kernel.root_dir / bootstrap.php.cache第1392行 - +       在HttpKernel - >句柄(对象(请求),' 1',true)       在kernel.root_dir / bootstrap.php.cache第1568行 - +       在HttpKernel - >句柄(对象(请求),' 1',true)       在kernel.root_dir / bootstrap.php.cache第619行 - +       在内核 - >句柄(对象(请求))       在/home/wwwmain/www_v5/web/app_dev.php第25行 - +

日志:

  

DEBUG - 通知事件" kernel.request"听众   " Symfony的\元器件\ HttpKernel \事件监听\ ProfilerListener :: onKernelRequest&#34 ;.       DEBUG - 通知事件" kernel.request"监听器" Symfony \ Bundle \ FrameworkBundle \ EventListener \ TestSessionListener :: onKernelRequest"。       DEBUG - 通知事件" kernel.exception" to listener" Symfony \ Component \ HttpKernel \ EventListener \ ProfilerListener :: onKernelException"。       DEBUG - 通知事件" kernel.exception" to listener" Symfony \ Component \ HttpKernel \ EventListener \ ExceptionListener :: onKernelException"。       CRITICAL - LogicException:无法更改活动会话(未捕获的异常)的ID   /home/wwwmain/www_v5/app/cache/dev/classes.php第484行       DEBUG - 通知事件" kernel.request"侦听器" Symfony \ Component \ HttpKernel \ EventListener \ ProfilerListener :: onKernelRequest"。       DEBUG - 通知事件" kernel.request"监听器" Symfony \ Bundle \ FrameworkBundle \ EventListener \ TestSessionListener :: onKernelRequest"。       DEBUG - 通知事件" kernel.request"侦听器" Symfony \ Bundle \ FrameworkBundle \ EventListener \ SessionListener :: onKernelRequest"。       DEBUG - 通知事件" kernel.request" to listener" Symfony \ Component \ HttpKernel \ EventListener \ RouterListener :: onKernelRequest"。       DEBUG - 通知事件" kernel.request"监听器" Symfony \ Component \ HttpKernel \ EventListener \ LocaleListener :: onKernelRequest"。       DEBUG - 通知事件" kernel.request"监听器" Symfony \ Component \ Security \ Http \ Firewall :: onKernelRequest"。       DEBUG - 通知事件" kernel.request"收听者" Eyrolles \ CompteBundle \ Service \ RequestListener :: onKernelRequest"。       DEBUG - 通知事件" kernel.request"听众" Eyrolles \ EcommerceBundle \ Twig \ Extension \ TwigExtension2 :: onKernelRequest"。       DEBUG - 通知事件" kernel.request" to listener" Symfony \ Bundle \ AsseticBundle \ EventListener \ RequestListener :: onKernelRequest"。       DEBUG - 通知事件" kernel.controller"侦听器" Symfony \ Bundle \ FrameworkBundle \ DataCollector \ RouterDataCollector :: onKernelController"。       DEBUG - 通知事件" kernel.controller"监听器" Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ ControllerListener :: onKernelController"。       DEBUG - 通知事件" kernel.controller"侦听器" Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ ParamConverterListener :: onKernelController"。       DEBUG - 通知事件" kernel.controller"侦听器" Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ TemplateListener :: onKernelController"。       DEBUG - 通知事件" kernel.controller" to listener" Symfony \ Component \ HttpKernel \ DataCollector \ RequestDataCollector :: onKernelController"。

任何想法,想法?

1 个答案:

答案 0 :(得分:0)

看起来你正在运行phpunit测试?如果是这样,那么如果Calss TestSessionListener找到具有会话名称的Cookie,则会调用Session :: setId()。

我也遇到过这个问题。看起来唯一的方法是扩展此类并覆盖“test.session.listener.class”参数。