首页 文章

Symfony ESI Cache / Surrogate Listener问题

提问于
浏览
0

我已经部署到一个实时的Ubuntu 14.04服务器,它在 app_dev 中工作正常 . 但是,当我在应用程序中运行它时,它会显示503错误,并在应用程序日志文件中显示以下内容:

我在Vagrant设置中获得了完全相同的代码,相同的操作系统版本,它在app和 app_dev 都可以正常工作

有没有人遇到过这个?

Symfony 2.7.0 / Ubuntu 14.04 / Distro PHP / mySQL - 尝试清除缓存并重新安装所有作曲家包 . [2015-06-09 16:36:43] request.INFO:匹配的路由“fos_user_security_login” . { “route_parameters”:{ “_controller”: “FOS \ UserBundle \控制器\ SecurityController ::则loginAction”, “_route”: “fos_user_security_login”}, “REQUEST_URI”: “HTTP://xxxx/app.php/login”} [] [2015-06-09 16:36:43] security.INFO:使用匿名令牌填充TokenStorage . [] [] [2015-06-09 16:36:43] request.CRITICAL:未捕获PHP异常Symfony \ Component \ Debug \ Exception \ ContextErrorException:“捕获致命错误:参数1传递给Symfony \ Component \ HttpKernel \ EventListener \ SurrogateListener :: __ construct()必须是Symfony \ Component \ HttpKernel \ HttpCache \ SurrogateInterface的实例,Symfony \ Component \ HttpKernel \ HttpCache \ Esi的实例,在/ var / www / xxxx / app / cache / prod / appProdProjectContainer中调用第557行.php并定义“at /var/www/xxxx/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php第33行{”exception“:”[object](Symfony \ Component \ Debug \ Exception \ ContextErrorException(code:0):Catchable Fatal Error:传递给Symfony \ Component \ HttpKernel \ EventListener \ SurrogateListener :: __ construct()的参数1必须是Symfony \ Component \ HttpKernel \ HttpCache \ SurrogateInterface的实例,实例给出了Symfony \ Component \ HttpKernel \ HttpCache \ Esi,在/ var / www / xxxx / app / cache / prod / appProd中调用第557行的ProjectContainer.php,定义于/var/www/xxxx/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php:33)“} []

(To those who suggest code formatting the log lines, it formats them onto a single line, which basically means having to scroll them to read them, which is worse than above).

1 回答

  • 0

    感叹 - 总是如此 . 你花了半个小时试图解决它,你然后在SO上发布问题,并在2分钟内你自己解决它!

    考虑到流浪者设置之间的设置差异,活动框有多个项目活动然后BINGO!它发生在我身上 .

    应用程序环境使用APC来缓存类,是的,两个项目都有相同的apc缓存密钥!

    快速密钥更改和缓存重建及其全部修复!

    我以为我会回答这个问题,其他任何人都有类似的问题 .

    更新:

    对app.php的调整....

    // As APC requires a unique key prefix, we'll use the directory above     web, which will be unique.
    $curdir = pathinfo(getcwd());
    $curdir = basename($curdir['dirname']);
    $loader = new ApcClassLoader($curdir . '_', $loader);
    $loader->register(true);
    

    这使用cwd上面的文件夹(通常是apache的doc root)来为密钥添加前缀,只要它们是唯一的(它应该是),那么多个缓存就不会发生冲突 .

相关问题