[Symfony1.4] Strict、Deprecated エラーや Warning を表示させない設定方法
Symfony1.4 にて、PEARを使うと、StrictエラーやらDeprecatedエラーやらが大量に出力されました。
エラーの出力設定を php.ini で変更したのですが、Symfonyのプログラムでは反映されていませんでした。
Symfonyには プロジェクトホーム/apps/frontend/config/settings.yml に error_reporting が書かれているので、php.ini の設定をこれで上書きしてしまっているようです。
ちなみに、「error_reporting」というワードが記載されているファイルは以下のように grep コマンドで探します。
1 2 3 4 5 | # grep -R error_reporting ./ ./cache/frontend/dev/config/config_settings.yml.php: 'sf_error_reporting' => 32767, ./apps/frontend/config/settings.yml: error_reporting: <?php echo (E_ALL | E_STRICT)."\n" ?> ./apps/frontend/config/settings.yml: error_reporting: <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."\n" ?> |
該当しそうな部分が見つかりました。
cache の config_settings.yml.php に ‘sf_error_reporting’ => 32767, とあり、32767 デフォルトのE_ALL | E_STRICTなので、php.ini の設定がSymfony側に反映されていないことが、ここで確認できます。
デフォルトでは settings.yml は以下のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # You can find more information about this file on the symfony website: # http://www.symfony-project.org/reference/1_4/en/04-Settings prod: .settings: no_script_name: true logging_enabled: false dev: .settings: error_reporting: <?php echo (E_ALL | E_STRICT)."\n" ?> web_debug: true cache: false no_script_name: false etag: false test: .settings: error_reporting: <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."\n" ?> cache: false web_debug: false no_script_name: false etag: false all: .settings: # Form security secret (CSRF protection) csrf_secret: ebfxa42b0x90387xd2fx4d24xd00xxx38c1a9x16 # Output escaping settings escaping_strategy: true escaping_method: ESC_SPECIALCHARS # Enable the database manager use_database: true |
dev の部分を以下のように変更して、Strict エラーと Deprecated エラーを表示させないようにします。
1 2 3 | dev: .settings: error_reporting: <?php echo (E_ALL & ~E_DEPRECATED)."\n" ?> |
以上です。