#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 до следующей основной версии.