web-dev-qa-db-ja.com

Symfonyで非推奨の警告を無効にする2(.7)

Symfony 22.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.

今のところそれらを無効にする方法はありますか?

29
Roel Veldhuizen

同じ問題があり、以下のリンクと同様に解決しました。 symfonyはすべてのエラーを報告することを宣言し、設計によりphp.iniに入力した内容をオーバーライドします(そうしないと、Niceスタックトレースをキャッチして表示できません)。

そのため、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/

16
phpguru

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);

これにより、他のすべてのエラーレポートがそのまま残り、減価償却された警告は抑制されます。そして、カーネルをいじる必要はまったくありません。

45
James Grundner

私の場合、SYMFONY_DEPRECATIONS_HELPERenvironnment変数を使用せずに非推奨の警告を隠すことはできませんでした。

phpunit.xmlを変更します

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

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

その後、テストの失敗とはみなされない「Remaining deprecation notices(x)」のようなメッセージが1つだけ表示されます。

これが役立つことを願っています。

36
j-guyon

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'

Twig.form構成キーは、Twigの新しいバージョンで削除されました。したがって、config.ymlのキーを置き換える必要があります

 ///DEPRECATED : 

  twig:
     form:
         resources:
             - 'path_to_template_file'

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