在 Symfony 2(.7) 中禁用弃用警告
Disable deprecated warning in 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.
知道如何暂时禁用它们吗?
我遇到了同样的问题,解决方法与下面类似link。 Symfony 声明报告所有错误并覆盖你在 php.ini 中的设计(否则它无法为你捕获和显示漂亮的堆栈跟踪)。
因此,您需要 通过在 AppKernel.php 中创建 init()
函数并设置 error_reporting 来覆盖 Symfony2 的内置错误报告想要那里,以及(可能)一些环境检测以确保您不会在生产中显示错误,例如:
// 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 进行翻译 :) http://tokarchuk.ru/2012/12/disable-deprecated-warnings-in-symfony-2/
AppKernel 继承的 Kernel::init() 函数本身已贬值,因此更改它不是一个可行的长期解决方案。
您可以通过更改对 Debug::enable() 的调用来轻松覆盖错误报告;在 app/console 和 web/app_dev.php 中都是这样。
改变
Debug::enable();
至
Debug::enable(E_RECOVERABLE_ERROR & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED, false);
这将在抑制贬值警告的同时保留所有其他错误报告。而且您根本不需要弄乱内核。
新版本的 Twig 中删除了 twig.form 配置键。因此,您应该替换 config.yml
中的密钥
///DEPRECATED :
twig:
form:
resources:
- 'path_to_template_file'
// NEW WAY :
twig:
form_themes:
- 'path_to_template_file'
请注意,通过 error_reporting() 或 Debug::enable() 禁用弃用警告不会阻止它们被记录到 dev.log。要禁止它们被记录,您需要将 monolog 处理程序中的日志级别更改为 "warning"(弃用警告在 "php" 频道中记录为 "info")。
或者,为了防止其他日志受到影响,您可以为 "php" 频道创建一个具有不同级别的单独的 monolog 处理程序,例如
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'
就我而言,我无法在不使用 SYMFONY_DEPRECATIONS_HELPER
environnment 变量的情况下隐藏已弃用的警告。
将您的 phpunit.xml
更改为
<phpunit>
<!-- ... -->
<php>
<env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
</php>
</phpunit>
然后,您只会收到一条消息,如 "Remaining deprecation notices (x)",这不会被视为测试失败。
希望这会有所帮助。
自从我 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.
知道如何暂时禁用它们吗?
我遇到了同样的问题,解决方法与下面类似link。 Symfony 声明报告所有错误并覆盖你在 php.ini 中的设计(否则它无法为你捕获和显示漂亮的堆栈跟踪)。
因此,您需要 通过在 AppKernel.php 中创建 init()
函数并设置 error_reporting 来覆盖 Symfony2 的内置错误报告想要那里,以及(可能)一些环境检测以确保您不会在生产中显示错误,例如:
// 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 进行翻译 :) http://tokarchuk.ru/2012/12/disable-deprecated-warnings-in-symfony-2/
AppKernel 继承的 Kernel::init() 函数本身已贬值,因此更改它不是一个可行的长期解决方案。
您可以通过更改对 Debug::enable() 的调用来轻松覆盖错误报告;在 app/console 和 web/app_dev.php 中都是这样。
改变
Debug::enable();
至
Debug::enable(E_RECOVERABLE_ERROR & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED, false);
这将在抑制贬值警告的同时保留所有其他错误报告。而且您根本不需要弄乱内核。
新版本的 Twig 中删除了 twig.form 配置键。因此,您应该替换 config.yml
中的密钥 ///DEPRECATED :
twig:
form:
resources:
- 'path_to_template_file'
// NEW WAY :
twig:
form_themes:
- 'path_to_template_file'
请注意,通过 error_reporting() 或 Debug::enable() 禁用弃用警告不会阻止它们被记录到 dev.log。要禁止它们被记录,您需要将 monolog 处理程序中的日志级别更改为 "warning"(弃用警告在 "php" 频道中记录为 "info")。
或者,为了防止其他日志受到影响,您可以为 "php" 频道创建一个具有不同级别的单独的 monolog 处理程序,例如
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'
就我而言,我无法在不使用 SYMFONY_DEPRECATIONS_HELPER
environnment 变量的情况下隐藏已弃用的警告。
将您的 phpunit.xml
更改为
<phpunit>
<!-- ... -->
<php>
<env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
</php>
</phpunit>
然后,您只会收到一条消息,如 "Remaining deprecation notices (x)",这不会被视为测试失败。
希望这会有所帮助。