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

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

ProjectXApiBundleTestsControllerSectionsControllerTest::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.

есть идеи, как отключить их?

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/


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

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

изменить

Debug::enable();

to

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

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


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

изменить phpunit.xml С

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

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

тогда у вас будет только одно сообщение, например "оставшиеся уведомления об устаревании (x)", которое не рассматривается как тестовый сбой.

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


обратите внимание, что отключение предупреждений об устаревании через 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'

прутик.конфигурационный ключ формы был удален в новой версии Twig. Поэтому вы должны заменить ключ в своей конфигурации.в формате YML

 ///DEPRECATED : 

  twig:
     form:
         resources:
             - 'path_to_template_file'

 // NEW WAY : 
  twig:
     form_themes:
         - 'path_to_template_file'