Отключить устаревшее предупреждение в Symfony 2(.7)

С момента моего Symfony 2 обновления до 2.7. Я получаю много устаревших ошибок в PHPUnit и console (сообщение уже понятно).

ProjectX\ApiBundle\Tests\Controller\SectionsControllerTest::testPostDebug()
The twig.form.resources configuration key is deprecated since version 2.6 and will be removed in 3.0. Use the twig.form_themes configuration key instead.

Любая идея, как отключить их на данный момент?


person Roel Veldhuizen    schedule 04.03.2015    source источник
comment
Что ж, будем надеяться, что начиная с symfony 2.7.1 сообщения об устаревании отключены по умолчанию и будут появляться только на панели отладки разработчика. symfony.com/blog/symfony-2-7-1-released   -  person COil    schedule 04.07.2015


Ответы (5)


У меня такая же проблема, и я решил ее по ссылке ниже. Symfony объявляет о необходимости сообщать обо всех ошибках и переопределяет то, что вы поместили в php.ini по дизайну (иначе он не смог бы поймать и отобразить для вас хорошие трассировки стека).

Итак, вам нужно переопределить встроенные отчеты об ошибках Symfony2, создав функцию init() в вашем AppKernel.php и настроив error_reporting так, как вы хотите, наряду с (возможно) некоторым обнаружением среды чтобы убедиться, что вы не отображаете ошибки в производстве, например:

// Add this to app/AppKernel.php
public function init()
{
    if ($this->debug) {
        ini_set('display_errors', 1);
        error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
    } else {
        ini_set('display_errors', 0);
    }
}

Подробнее здесь (используйте Google Translate, если не читаете по-русски :) http://tokarchuk.ru/2012/12/disable-deprecated-warnings-in-symfony-2/

person phpguru    schedule 04.03.2015

Унаследованная от AppKernel функция Kernel::init() обесценивается сама по себе, поэтому ее изменение не является жизнеспособным долгосрочным решением.

Вы можете легко переопределить отчет об ошибках, изменив вызов Debug::enable(); как в приложении/консоли, так и в web/app_dev.php.

Сдача

Debug::enable();

to

Debug::enable(E_RECOVERABLE_ERROR & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED, false);

Это оставит все другие отчеты об ошибках в такт, подавляя устаревшие предупреждения. И вам вообще не нужно возиться с ядром.

person James Grundner    schedule 28.04.2015

В моем случае я не мог скрыть устаревшее предупреждение без использования переменной SYMFONY_DEPRECATIONS_HELPERenvironnment.

Измените свой phpunit.xml с помощью

<phpunit>
    <!-- ... -->

    <php>
        <env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
    </php>
</phpunit>

Затем у вас будет только одно сообщение, например «Оставшиеся уведомления об устаревании (x)», которое не считается сбоем теста.

Надеюсь, это поможет.

person j-guyon    schedule 14.06.2016
comment
Это решает проблему для моего конвейера, но при локальном запуске phpunit я действительно хочу вывести эти устаревшие версии. Однако $_ENV['SYMFONY_DEPRECATIONS_HELPER'] = 'weak'; не решает этого. - person Rvanlaak; 16.02.2017

Обратите внимание, что отключение предупреждений об устаревании с помощью error_reporting() или Debug::enable() не предотвратит их регистрацию в dev.log. Чтобы отключить их регистрацию, вам нужно изменить уровень журнала в обработчике монолога на «предупреждение» (предупреждения об устаревании регистрируются как «информация» в канале «php»).

В качестве альтернативы, чтобы предотвратить влияние на другие журналы, вы можете создать отдельный обработчик монолога с другим уровнем для канала «php», например.

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
            formatter: monolog.formatter.session_request
            channels: '!php'
        php:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: warning
            formatter: monolog.formatter.session_request
            channels: 'php'
person Dimosthenis Nikoudis    schedule 03.03.2016
comment
К вашему сведению, канал php может содержать не только сообщения об устаревании. Например, он также может содержать неперехваченные исключения во время рендеринга шаблона ветки. - person Maurice; 18.12.2019
comment
проблема в том, что, возможно, есть куча других журналов, классифицированных как информация, которую стоит регистрировать в рабочей среде. - person Murilo; 26.05.2021

Ключ конфигурации twig.form был удален в новой версии Twig. Поэтому вы должны заменить ключ в вашем config.yml

 ///DEPRECATED : 

  twig:
     form:
         resources:
             - 'path_to_template_file'

 // NEW WAY : 
  twig:
     form_themes:
         - 'path_to_template_file'
person axelvnk    schedule 05.06.2015