Symfony ESI Cache / Surrogate Listener Issue

У меня есть продукт, который я развернул на работающем сервере Ubuntu 14.04, который отлично работает в app_dev, Тем не менее, когда я запускаю его в приложении, возникает ошибка 503, с приведенным ниже в файле журнала приложения:

У меня точно такой же код в настройке Vagrant, та же версия ОС, и она отлично работает как в приложении, так и в приложении. 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»: { «_ контроллер»: «FOS \ UserBundle \ Controller \ SecurityController :: loginAction», «_ маршрут»: «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 \ Component \ HttpKernel \ EventListener \ SurrogateListener :: __ конструкт ()
должен быть примером
Symfony \ Component \ 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 {«исключение»: «[объект] (Symfony \ Component \ Debug \ Exception \ ContextErrorException (код: 0):
Исправляемая фатальная ошибка: аргумент 1 передан
Symfony \ Component \ HttpKernel \ EventListener \ SurrogateListener :: __ конструкт ()
должен быть примером
Symfony \ Component \ 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

Решение

вздох — Всегда так. Вы потратили полчаса на его решение, затем отправили вопрос на SO, а через 2 минуты решили сами!

Размышление о разнице в настройке между настройками vagrant заключается в том, что в live box активнее более 1 проекта, а затем 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) для префикса ключа, если они уникальны (так и должно быть), тогда несколько кешей не будут конфликтовать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]