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" ?> |
# 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 |
# 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" ?> |
dev:
.settings:
error_reporting: <?php echo (E_ALL & ~E_DEPRECATED)."\n" ?>
以上です。
日本Symfonyユーザー会 秀和システム 2011-03