Пытаясь развернуть мое обновленное приложение Symfony2, я столкнулся с следующей проблемой.Я не могу очистить кеш (потому что кеш устарел)
(обратите внимание, что мое приложение использует the new Symfony 3 directory structure. Заменить bin/console
с app/console
и var/cache
с app/cache
, если вы используете текущую структуру каталогов)
Я недавно переименовал один из моих классов обслуживания (VariantSlugListener
). При развертывании приложения на промежуточном сервере, я получил следующее сообщение об ошибке при запуске bin/console assetic:dump --env=prod
:
PHP Fatal error: Class 'MyBundle\Listener\VariantSlugListener' not found in /var/www/example.com/staging/var/cache/prod/appProdProjectContainer.php on line 494
линии 494 из appProdProjectContainer.php
содержит следующий код:
return $this->services['3f288d4f09c9906944ba7e17358f669b942397baf9d79d5ff0737bb756df7023_1'] = new \MyBundle\Listener\VariantSlugListener();
Это не удивительно, что \MyBundle\Listener\VariantSlugListener
не может быть найден, поскольку он был переименован в \MyBundle\EventListener\VariantSlugSubscriber
с последним обновлением. Решение было бы просто очистить кэш Symfony.
Однако, пытаясь очистить кеш (используя bin/console cache:clear --env=prod
), я получаю ту же ошибку, что и в команде assetic:dump
. Поэтому я получаю сообщение об ошибке, потому что мой кэш Symfony устарел, но я не могу очистить кеш из-за ошибки.
Возможно, обойти это можно, вручную удалив содержимое каталога var/cache
, но это не похоже на лучшее решение.
Я что-то не хватает?
среда prod не предназначена для изменения имен файлов php, поэтому sduo rm -rf var/cache * –
Эй, Джон, я забыл упомянуть. Я сделал изменения на своей локальной машине разработки, а затем развернул их на сервере с помощью git. Кэш Symfony не способен справиться с этим? –
Возможно, вы забыли добавить var/cache в .gitignore? лично я бы предпочел, чтобы ваш сценарий развертывания удалял содержимое var/cache после развертывания. –