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.
今のところそれらを無効にする方法はありますか?
同じ問題があり、以下のリンクと同様に解決しました。 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/
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);
これにより、他のすべてのエラーレポートがそのまま残り、減価償却された警告は抑制されます。そして、カーネルをいじる必要はまったくありません。
私の場合、SYMFONY_DEPRECATIONS_HELPER
environnment変数を使用せずに非推奨の警告を隠すことはできませんでした。
phpunit.xml
を変更します
<phpunit>
<!-- ... -->
<php>
<env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
</php>
</phpunit>
その後、テストの失敗とはみなされない「Remaining deprecation notices(x)」のようなメッセージが1つだけ表示されます。
これが役立つことを願っています。
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'