我已经将一个产品部署到现场的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&#34 ;. {" route_parameters" {" _controller":" FOS \ UserBundle \控制器\ SecurityController ::则loginAction"" _route":&#34 ; 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:" Catchable 致命错误:参数1传递给 Symfony的\分量\ HttpKernel \事件监听\ SurrogateListener :: __结构() 必须是一个实例 Symfony \ Component \ HttpKernel \ HttpCache \ SurrogateInterface,实例 给出Symfony \ Component \ HttpKernel \ HttpCache \ Esi,调用 第557行/var/www/xxxx/app/cache/prod/appProdProjectContainer.php 并定义了#34;在 /var/www/xxxx/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php 第33行{"例外":" [对象] (Symfony \ Component \ Debug \ Exception \ ContextErrorException(code:0): 可捕获的致命错误:参数1传递给 Symfony的\分量\ HttpKernel \事件监听\ SurrogateListener :: __结构() 必须是一个实例 Symfony的\分量\ HttpKernel \ HttpCache \ SurrogateInterface, 给出了Symfony \ Component \ HttpKernel \ HttpCache \ Esi的实例, 在/var/www/xxxx/app/cache/prod/appProdProjectContainer.php中调用 第557行并定义于 /var/www/xxxx/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php:33)"} []
(对于那些建议代码格式化日志行的人,它将它们格式化为一行,这基本上意味着必须滚动它们来读取它们,这比上面的情况更糟)。
答案 0 :(得分: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根)作为密钥的前缀,只要它们是唯一的(它应该是),然后多个缓存就赢了&#39 ; t冲突。