Отключить устаревшее предупреждение в 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'