symfony5 — не работает после udpate композитора (проблема с кэшем)

#symfony #caching #doctrine-orm #composer-php

#symfony #кэширование #doctrine-orm #композитор-php

Вопрос:

С тех пор мой сайт 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 amp;amp; composer thanks now?
This will spread some 💖  by sending ato 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 DoctrineORM  
!!    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
 

Это говорит о чем-то DoctrineORMConfiguration::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 DoctrineORM  
  Configuration::setMetadataDriverImpl().
 

ПРАВКА 2:

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

config/packages/prod/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
#...
 

Комментарии:

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

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

3. да, я запустил его в рабочей системе (текстовая форма добавлена в РЕДАКТИРОВАНИЕ 3)

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

5. rm -rf var / cache должен сделать трюк, я думаю

Ответ №1:

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

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

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