[Symfony1.4] Strict、Deprecated エラーや Warning を表示させない設定方法

Wed, September 7, 2011 - 3 min read

 

Symfony1.4 にて、PEARを使うと、StrictエラーやらDeprecatedエラーやらが大量に出力されました。  

エラーの出力設定を php.ini で変更したのですが、Symfonyのプログラムでは反映されていませんでした。  

Symfonyには プロジェクトホーム/apps/frontend/config/settings.yml に error_reporting が書かれているので、php.ini の設定をこれで上書きしてしまっているようです。  

ちなみに、「error_reporting」というワードが記載されているファイルは以下のように grep コマンドで探します。  

# grep -R error_reporting ./

./cache/frontend/dev/config/config_settings.yml.php:  'sf_error_reporting' => 32767,
./apps/frontend/config/settings.yml:    error_reporting:        
./apps/frontend/config/settings.yml:    error_reporting:        

 

該当しそうな部分が見つかりました。  

cache の config_settings.yml.php に ‘sf_error_reporting’ => 32767, とあり、32767 デフォルトのE_ALL | E_STRICTなので、php.ini の設定がSymfony側に反映されていないことが、ここで確認できます。  

デフォルトでは settings.yml は以下のようになっています。  

# 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:        
    web_debug:              true
    cache:                  false
    no_script_name:         false
    etag:                   false

test:
  .settings:
    error_reporting:        
    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 エラーを表示させないようにします。  

dev:
  .settings:
    error_reporting:        

 

以上です。