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

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

  • linux Debian Wheezy
  • PHP 5.4.4
  • Symfony版本2.1.10-DEV - app / dev / debug
  • 异常的致命错误:

    vendor / symfony / symfony / src / Symfony / Component / HttpFoundation / Session / Storage / Proxy / AbstractProxy.php throw new LogicException('无法更改活动会话的ID');

    堆栈跟踪 :

    在第484行的kernel.root_dir / cache / dev / classes.php中 - + public function setId($ id){if($ this-> isActive()){throw new LogicException('不能更改活动会话的ID “); } session_id($ id); 在208处的kernel.root_dir / cache / dev / classes.php中的AbstractProxy - > setId('09g5hbsvg1apk8d32k52l19rr5') - 在NativeSessionStorage处的+ - setId('09g5hbsvg1apk8d32k52l19rr5')在kernel.root_dir / cache / dev / classes.php at第780行 - +会话 - > setId('09g5hbsvg1apk8d32k52l19rr5')在/home/wwwmain/www_v5/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/TestSessionListener.php在第54行 - +在TestSessionListener - > / home / wwwmain / www_v5 / vendor / symfony / symfony / src / Symfony / Component / HttpKernel / Debug中的call_user_func(array(object(TestSessionListener),'onKernelRequest'),object(GetResponseEvent))中的onKernelRequest(object(GetResponseEvent) /ContainerAwareTraceableEventDispatcher.php第139行 - + ContainerAwareTraceableEventDispatcher - > doDispatch(array(object(ProfilerListener),'onKernelRequest'),array(object(TestSessionListener),'onKernelRequest'),array(object(SessionListener),'onKernelRequest '),数组(对象(RouterListener),'onKernelRequest'),arr '对象(LocaleListener),'onKernelRequest'),数组(对象(防火墙),'onKernelRequest'),数组(对象(RequestListener),'onKernelRequest'),数组(对象(TwigExtension2),'onKernelRequest'对象(RequestListener),'onKernelRequest')),'kernel.request',object(GetResponseEvent))在4781行的kernel.root_dir / cache / dev / classes.php中 - +在EventDispatcher - > dispatch('kernel.request' ,/ home / wwwmain / www_v5 / vendor /目录下的kernel.root_dir / cache / dev / classes.php中的对象(GetResponseEvent) symfony / symfony / src / Symfony / Component / HttpKernel / Debug / ContainerAwareTraceableEventDispatcher.php在第78行 - + ContainerAwareTraceableEventDispatcher - > dispatch('kernel.request',object(GetResponseEvent))in kernel.root_dir / bootstrap.php.cache at第1412行 - + HttpKernel - > handleRaw(object(Request),'1')in kernel.root_dir / bootstrap.php.cache at 1392 - + at HttpKernel - > handle(object(Req 在kernel.root_dir / bootstrap.php.cache中的第1568行 - +在HttpKernel - > handle(object(Request),'1',true)中的kernel.root_dir / bootstrap.php。缓存在第619行 - +在内核 - >处理(对象(请求))在/home/wwwmain/www_v5/web/app_dev.php在第25行 - +

    日志:

    DEBUG - 通知事件“kernel.request”给监听器“Symfony Component HttpKernel EventListener ProfilerListener :: onKernelRequest”。 DEBUG - 通知事件“kernel.request”给监听器“Symfony Bundle FrameworkBundle EventListener TestSessionListener :: onKernelRequest”。 DEBUG - 通知事件“kernel.exception”给侦听器“Symfony Component HttpKernel EventListener ProfilerListener :: onKernelException”。 DEBUG - 通知事件“kernel.exception”给侦听器“Symfony Component HttpKernel EventListener ExceptionListener :: onKernelException”。 CRITICAL - LogicException:无法更改/home/wwwmain/www_v5/app/cache/dev/classes.php第484行处的活动会话的标识(未捕获的异常)DEBUG - 向监听器通知的事件“kernel.request”“Symfony Component HttpKernel 事件监听 ProfilerListener :: onKernelRequest”。 DEBUG - 通知事件“kernel.request”给监听器“Symfony Bundle FrameworkBundle EventListener TestSessionListener :: onKernelRequest”。 DEBUG - 通知事件“kernel.request”给监听器“Symfony Bundle FrameworkBundle EventListener SessionListener :: onKernelRequest”。 DEBUG - 通知事件“kernel.request”给监听器“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”给监听器“Symfony Bundle AsseticBundle EventListener RequestListener :: onKernelRequest”。 调试 - 通知事件“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”监听器“Symfony Component HttpKernel DataCollector RequestDataCollector :: onKernelController”。

    任何想法,想法?


    看起来你正在运行phpunit测试? 如果是这样,则如果TestSessionListener发现Cookie与会话名称,则调用Session :: setId()。

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

    链接地址: http://www.djcxy.com/p/53993.html

    上一篇: Symfony2 PHP 5.4.4 Cannot change the ID of an active session

    下一篇: Datatable updating Entity through Ajax