Как удалить устаревший Symfony Component Debug DebugClassLoader?

#php #symfony

#php #symfony

Вопрос:

Я обновил Symfony 3.4 до 4.4. Осталось только следующее предупреждение об устаревании:

php.INFO : Пользователь устарел: класс «Symfony Component Debug DebugClassLoader» устарел со времен Symfony 4.4, вместо этого используйте «Symfony Component ErrorHandler DebugClassLoader». {«exception»:»[object] (ErrorException(code: 0): Пользователь устарел: класс «Symfony Component Debug DebugClassLoader» устарел со времен Symfony 4.4, вместо этого используйте «Symfony Component ErrorHandler DebugClassLoader». в /vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php:16)»} []

Я нигде не использую DebugClassLoader . Как мне удалить это предупреждение?

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

1. Рассмотрите возможность создания нового проекта 4.4 и сравнения файлов, таких как index.php , Kernel.php и утешайтесь тем, что у вас есть. Файлы такого рода не обновляются в рамках обычного процесса обновления и в конечном итоге не синхронизируются. И это, вероятно, решит вашу проблему.

Ответ №1:

Проверьте свои index.php и свои bin/console файлы.

В index.php , например, должна быть такая часть:

 if ($_SERVER['APP_DEBUG']) {
    umask(0000);

    Debug::enable();
}
  

Но соответствующий импорт, вероятно, будет:

 use SymfonyComponentDebugDebug;
  

В обоих файлах измените его на:

 use SymfonyComponentErrorHandlerDebug;
  

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

1. Я использую последнюю версию SF 4.4 локально, и есть 5 разных файлов Symfony, которые все еще ссылаются на это, хотя и некоторые LegacyDebugClassLoader . Это maker-bundle тоже одно.

Ответ №2:

Проверьте свой bin/console файл.

Вам нужны изменения:

используйте SymfonyComponentDebugDebug;

Для:

используйте SymfonyComponentErrorHandlerDebug;

При выполнении команды вы получите сообщение об устаревании.

Ответ №3:

в Configuration.php (поставщик / codeception / codeception/ src / Codeception)

установить

 'convert_deprecations_to_exceptions' => true
  

Это сработало хорошо для меня

Ответ №4:

Если вы проверите трассировку, вы увидите:

 User Deprecated: The "SymfonyComponentDebugDebugClassLoader" class is deprecated since Symfony 4.4, use "SymfonyComponentErrorHandlerDebugClassLoader" instead.
Show context    Hide trace
{▼
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php:16 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Caster/ExceptionCaster.php:216 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Caster/ExceptionCaster.php:149 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Cloner/AbstractCloner.php:341 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Cloner/VarCloner.php:209 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Cloner/AbstractCloner.php:274 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php:85 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php:75 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Profiler/Profiler.php:100 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php:127 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/WrappedListener.php:126 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:264 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:239 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:73 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php:168 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:103 {▶}
  /var/www/html/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:166 {▶}
  /var/www/html/web/app_dev.php:13 {▼
    › $response->send();
    › $kernel->terminate($request, $response);
    › 
  }
}
  

Кажется, это происходит из Symfony/Component/HttpKernel/Kernel .

Найдите использование в папке поставщика, если оно исходит от другого компонента, кроме Symfony, проверьте, может быть, более новая версия компонента имеет исправление для этого. Если устаревший компонент используется только самим Symfony, я бы не стал тратить слишком много времени на беспокойство об этом. Проблема будет решена, как только вы обновите свой Symfony до следующей основной версии.

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

1. Поскольку nobobdy упомянул, что ошибка исходит от bin/console , что заставляет вас думать, что это относится к OP?

2. Кроме того, поскольку Джейк написал, что он только что обновился с 3.4 до 4.4, как ваш ответ связан с этим?

3. @NicoHaase вы правы, я обновил свой ответ, удалив примечание bin / console. Начиная с отметки 4.4, он устарел в этой версии. Проблема будет решена путем обновления Symfony до следующей основной версии.