在Symfony 2中禁用已弃用的警告(.7)

Roe*_*zen 29 php symfony symfony-2.7

自从我Symfony 2更新到2.7.我得到了很多过时erors的PHPUnitconsole(信息是明确的现在).

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.
Run Code Online (Sandbox Code Playgroud)

知道如何禁用它们吗?

Jam*_*ner 45

AppKernel继承的Kernel :: init()函数本身已经过折旧,因此更改它不是一个可行的长期解决方案.

您可以通过更改对Debug :: enable()的调用来轻松覆盖错误报告; 在app/console和web/app_dev.php中都是如此.

更改

Debug::enable();
Run Code Online (Sandbox Code Playgroud)

Debug::enable(E_RECOVERABLE_ERROR & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED, false);
Run Code Online (Sandbox Code Playgroud)

这将使所有其他错误报告保持原状,同时抑制折旧警告.而且你根本不需要搞乱内核.


j-g*_*yon 37

就我而言,我不能在不使用SYMFONY_DEPRECATIONS_HELPER环境变量的情况下隐藏弃用的警告.

改变你phpunit.xml

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

    <php>
        <env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
    </php>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

然后,您将只有一条消息,如"剩余弃用通知(x)",这不被视为测试失败.

希望这会有所帮助.


php*_*uru 16

我有同样的问题,并解决它类似于以下链接.Symfony声明报告所有错误并覆盖你在php.ini中设计的内容(否则它无法捕获并显示好的堆栈跟踪).

所以,你需要通过init()在AppKernel.php中创建一个函数覆盖Symfony2的内置错误报告,并设置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);
    }
}
Run Code Online (Sandbox Code Playgroud)

更多细节(如果你不读俄语,请使用谷歌翻译)http://tokarchuk.ru/2012/12/disable-deprecated-warnings-in-symfony-2/


Dim*_*dis 9

请注意,通过error_reporting()或Debug :: enable()禁用弃用警告不会阻止它们记录到dev.log.要禁止它们被记录,您需要将monolog处理程序中的日志级别更改为"警告"(弃用警告在"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'
Run Code Online (Sandbox Code Playgroud)


axe*_*vnk 5

twig.form配置密钥已在新版本的Twig中删除.因此,您应该替换config.yml中的密钥

 ///DEPRECATED : 

  twig:
     form:
         resources:
             - 'path_to_template_file'

 // NEW WAY : 
  twig:
     form_themes:
         - 'path_to_template_file'
Run Code Online (Sandbox Code Playgroud)