Symfony5 - не работает после обновления композитора (проблема с кешем)

Мой сайт не работает с composer update. Проблема, кажется, не в самих обновленных пакетах (я тоже без проблем запускаю их в среде разработки). Кажется, что «только» кеш не может правильно очистить себя.

Loading composer repositories with package information
Updating dependencies (including require-dev)
Restricting packages listed in "symfony/symfony" to "5.1.*"

Prefetching 9 packages 🎶 💨
  - Downloading (100%)

Package operations: 0 installs, 51 updates, 3 removals
  - Removing symfony/uid (v5.1.8)
  - Removing symfony/polyfill-uuid (v1.20.0)
  - Removing easycorp/easyadmin-bundle (v3.1.9)
  - Updating symfony/flex (v1.10.0 => v1.11.0): Loading from cache
  - Updating symfony/routing (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/http-foundation (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/event-dispatcher (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/var-dumper (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/error-handler (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/http-kernel (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/finder (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/filesystem (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/dependency-injection (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/config (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/var-exporter (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/cache (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/framework-bundle (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/doctrine-bridge (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/string (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/console (v5.1.8 => v5.1.9): Loading from cache
  - Updating doctrine/doctrine-bundle (2.2.1 => 2.2.2): Loading from cache
  - Updating doctrine/inflector (1.4.3 => 2.0.3): Loading from cache
  - Updating doctrine/common (3.0.2 => 3.1.0): Loading from cache
  - Updating doctrine/orm (2.7.4 => 2.8.1): Loading from cache
  - Updating laminas/laminas-code (3.5.0 => 3.5.1): Loading from cache
  - Updating symfony/asset (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/dotenv (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/property-info (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/property-access (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/options-resolver (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/intl (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/form (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/mime (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/mailer (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/security-core (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/security-http (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/security-guard (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/security-csrf (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/security-bundle (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/serializer (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/translation (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/validator (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/yaml (v5.1.8 => v5.1.9): Loading from cache
  - Updating nikic/php-parser (v4.10.2 => v4.10.3): Loading from cache
  - Updating symfony/maker-bundle (v1.24.2 => v1.25.0): Loading from cache
  - Updating symfony/stopwatch (v5.1.8 => v5.1.9): Loading from cache
  - Updating doctrine/migrations (2.3.0 => 2.3.1): Loading from cache
  - Updating symfony/http-client (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/twig-bridge (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/debug-bundle (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/monolog-bridge (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/twig-bundle (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/web-profiler-bundle (v5.1.8 => v5.1.9): Loading from cache
  - Updating symfony/css-selector (v5.1.8 => v5.1.9): Loading from cache
Generating autoload files
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
84 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

What about running composer global require symfony/thanks && composer thanks now?
This will spread some 💖  by sending a ★  to the GitHub repositories of your fellow package maintainers.

Run composer recipes at any time to see the status of your Symfony recipes.

Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!  
!!   // Clearing the cache for the prod environment with debug                      
!!   // false                                                                       
!!  
!!  
!!  In ORMException.php line 40:
!!                                                                                 
!!    It's a requirement to specify a Metadata Driver and pass it to Doctrine\ORM  
!!    \Configuration::setMetadataDriverImpl().                                     
!!                                                                                 
!!  
!!  cache:clear [--no-warmup] [--no-optional-warmers] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>
!!  
!!  
Script @auto-scripts was called via post-update-cmd

Там что-то говорится о Doctrine\ORM\Configuration::setMetadataDriverImpl(), но я никогда не слышал об этом.

Есть идеи, что я могу сделать? Спасибо!


Обновлено:

Если я изменю .env.local на env=dev, это сработает. Также чистка кеша. Но если я попытаюсь ./bin/console cache:clear --env=prod, я получаю эту ошибку:

$ ./bin/console cache:clear --env=prod

In ORMException.php line 40:
                                                                               
  It's a requirement to specify a Metadata Driver and pass it to Doctrine\ORM  
  \Configuration::setMetadataDriverImpl().

Обновлено еще раз:

Возможно, это связано с этим:

конфигурация/пакеты/продукт/doctrine.yaml

doctrine:
    orm:
        auto_generate_proxy_classes: false
        metadata_cache_driver:
            type: pool
            pool: doctrine.system_cache_pool
        query_cache_driver:
            type: pool
            pool: doctrine.system_cache_pool
        result_cache_driver:
            type: pool
            pool: doctrine.result_cache_pool
#...

Пожалуйста, делитесь всеми сообщениями об ошибках в удобочитаемой форме, то есть в виде текста

Nico Haase 12.12.2020 17:06

Также, пожалуйста, поделитесь, какие пакеты были обновлены. Вы запускали composer update в производственной системе?

Nico Haase 12.12.2020 17:06

да, я запускал его в производственной системе (текстовая форма добавлена ​​​​в EDIT 3)

Tim K. 12.12.2020 17:10

Пожалуйста, никогда не делайте этого. Измените зависимости в вашей локальной системе, поместите composer.lock под контроль версий, запустите composer install во время развертывания, но никогда не запускайте composer update в любой другой системе, так как тогда вы потеряете контроль над версиями пакета.

Nico Haase 12.12.2020 17:11

Также, пожалуйста, добавьте все сообщения об ошибках в текстовом виде к вашему вопросу.

Nico Haase 12.12.2020 17:13

картинки заменены текстом. Во всяком случае, у меня все еще есть проблема. Кэш не очищается.

Tim K. 12.12.2020 17:19

Затем сделайте следующее в качестве быстрого шага: отмените изменение и разверните последнюю рабочую версию своего веб-сайта. После этого установите локальную систему разработки на APP_ENV=prod и обновляйте один пакет за другим (запуская composer update packagename), чтобы проверить, какой из них отвечает за проблему.

Nico Haase 12.12.2020 17:26

rm -rf var/cache должно помочь, я думаю

Urmat Zhenaliev 12.12.2020 19:54

@UrmatZhenaliev: Ты сделал мой день! Спасибо! Ты знаешь почему? Это похоже на обходной путь. Думаю, мне нужно что-то изменить в коде, чтобы он работал в будущем.

Tim K. 12.12.2020 20:12
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
9
480
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

При переключении между средами мне иногда приходится вручную удалять папки кеша.

Когда это происходит, я обычно делаю:

rm -rf var/cache/prod var/cache/dev

Другие вопросы по теме