SymfonyWorld Online 2021 Winter Edition December 9 – 10, 2021 100% Online +20 talks and workshops
Caution: You are browsing the legacy symfony 1.x part of this website.

settings.yml設定ファイル

1.2
Symfony version
1.4
Language

symfonyのほとんどはYAMLもしくはプレーンなPHPで書かれた設定ファイルを通して設定できます。 このセクションでは、アプリケーション用のメインの設定ファイルである、settings.ymlを説明します。

アプリケーション用のメインのsettings.yml設定ファイルはapps/APP_NAME/config/ディレクトリで見つかります。

はじめの章で説明したように、settings.ymlファイルは環境を認識しコンフィギュレーションカスケードのメカニズムが有効になります。

それぞれの環境は2つのサブセクション: .actions.settingsを持ちます。 共通ページ用にレンダリングされるデフォルトのアクション以外、すべての設定ディレクティブは.settingsサブセクションの下で機能します。

note

settings.yml設定ファイルはPHPファイルとしてキャッシュされます; プロセスはsfDefineEnvironmentConfigHandlerクラスによって自動的に管理されます。

設定

.actionsサブセクション

デフォルトコンフィギュレーション:

default:
  .actions:
    error_404_module:       default
    error_404_action:       error404
 
    login_module:           default
    login_action:           login
 
    secure_module:          default
    secure_action:          secure
 
    module_disabled_module: default
    module_disabled_action: disabled

.actionsサブセクションは共通のページがレンダリングされるときに実行するアクションを定義します。 それぞれの定義は2つのコンポーネントを格納します: 1つはモジュール用(サフィックスは_module)、もう1つはアクション用です(サフィックスは_action)。

error_404

error_404アクションは404ページがレンダリングされるときに実行されます。

login

loginアクションは認証されていないユーザーがセキュアなページにアクセスしようとするときに実行されます。

secure

secureアクションはユーザーが必須のクレデンシャルを持たないときに実行されます。

module_disabled

module_disabledアクションはユーザーが無効なモジュールをリクエストするときに実行されます。

.settingsサブセクション

.settingsサブセクションはフレームワークの設定が行われるところです。 下記のパラグラフはすべての可能な設定を説明し、重要度順におおまかに並べています。

.settingsセクションで定義されるすべての設定はsfConfigオブジェクトを使いsf_のプレフィックスをつけることでコード内の任意の場所で利用可能です。 たとえば、charset設定の値を得るには、次のコードを使います:

sfConfig::get('sf_charset');

escaping_strategy

デフォルト: off

escaping_strategy設定は出力エスケーパーサブフレームワークが有効であるかどうかを決定するブール値の設定です。 有効なとき、テンプレートのなかで利用可能なすべての変数は escaping_method設定で定義されるヘルパー関数を呼び出すことで自動的にエスケープされます(下記を参照)。

escaping_method設定はsymfonyによって使われるデフォルトのヘルパーであることに注意してください。 しかしこれはたとえばJavaScriptスクリプトのタグで変数を出力するときなど、ケースバイケースでオーバーライドできます。

出力エスケーパーサブフレームワークはエスケープ用にcharset設定を使います。

デフォルトの値をonに変更することを強くおすすめします。

tip

generate:appタスクでアプリケーションを作成するときに--escaping-strategyオプションを指定することでこの設定は自動的にセットできます。

escaping_method

デフォルト: ESC_SPECIALCHARS

escaping_method設定はテンプレートでエスケープするために使うデフォルト関数を定義します(上記のescaping_strategy設定を参照)。

組み込み関数の1つ: ESC_SPECIALCHARSESC_RAWESC_ENTITIESESC_JSESC_JS_NO_ENTITIESESC_SPECIALCHARSを選ぶもしくは独自関数を作ることができます。

たいていの場合、デフォルトの値で十分です。 英語もしくはヨーロッパの言語のみ扱う場合のみESC_ENTITIESヘルパーも使うことができます。

csrf_secret

デフォルト: false

csrf_secret設定はアプリケーション用の一意的な秘密の文字列(unique secret)です。 falseにセットされていない場合、これはフォームフレームワークで定義されるすべてのフォーム用のCSRFからの保護を有効にします。 リンクをフォームに変換することが必要なとき(たとえばHTTP DELETEメソッドをシミュレートする)この設定はlink_to()ヘルパーにも使われます。

デフォルトの値を一意的な秘密の文字列に変更することを強くおすすめします。

tip

--csrf-secretオプションを指定してgenerate:appでアプリケーションを作る際にこの設定は自動的にセットされます

charset

デフォルト: utf-8

charset設定はフレームワークにおいてレスポンスのContent-Typeヘッダーから出力エスケーピング機能までのどこでも使われる文字集合です。

たいていの場合、デフォルトで十分です。

warning

この設定はフレームワークの多くの場所で使われるので、この値は複数の場所で保存されます。 これを変更した後では、開発環境であってもコンフィギュレーションキャッシュをクリアしなければなりません。

enabled_modules

デフォルト: [default]

enabled_modules設定はこのアプリケーションで有効なモジュール名の配列です。 デフォルトでは、プラグインもしくはsymfonyコアで定義されるモジュールは有効ではなく、アクセスできるようにこの設定のリストに含めなければなりません。

モジュールの追加方法はシンプルで名前をリストに追加するだけです(モジュールの順序は問題にはなりません):

enabled_modules: [default, sfGuardAuth]

フレームワークで定義されるdefaultモジュールはサブセクションのsettings.yml.actionsでセットされるすべてのデフォルトのアクションを格納します。 これらすべてをカスタマイズし、この設定からdefaultモジュールを削除することをおすすめします。

default_timezone

デフォルト: なし

default_timezone設定はPHPで使われるデフォルトのタイムゾーンを定義します。 PHPで認識される任意のタイムゾーンになります。

note

タイムゾーンが定義されていない場合、php.iniファイルで定義することをおすすめします。 そうでなければ、symfonyはPHPのdate_default_timezone_get()関数を呼び出すことでベストのタイムゾーンを推測しようとします。

cache

デフォルト: off

cache設定はテンプレートキャッシュを有効もしくは無効にする。

tip

キャッシュシステムの一般設定はfactories.yml設定ファイルのview_cache_managerview_cacheセクションで行われます。 きめ細かい設定はcache.yml設定ファイルで行います。

etag

デフォルト: devtest環境を除いて、デフォルトではon

etag設定はHTTPのETagヘッダーの自動生成を有効もしくは無効にします。 symfonyによって生成されるETagはレスポンスのコンテンツの単純なmd5です。

i18n

デフォルト: off

i18n設定は国際化サブフレームワークを有効もしくは無効にするブール値です。 アプリケーションを国際化する場合、onにセットします。

tip

国際化システムの一般設定はfactories.yml設定ファイルのi18nセクションで行われます。

default_culture

デフォルト: en

default_culture設定は国際化サブフレームワークで使われるデフォルトのcultureを定義します。 これは任意の有効なcultureになります。

standard_helpers

デフォルト: [Partial, Cache, Form]

standard_helpers設定はすべてのテンプレート用にロードされるヘルパーグループの配列です (サフィックスのHelperを持たないgroupヘルパーの名前)。

no_script_name

デフォルト: onは最初に作成されるアプリケーションのprod環境用に、offはその他すべて

no_script_name設定はフロントコントローラースクリプトの名前が生成URLに追加されるかどうかを決定します。 デフォルトでは、最初に作成されるアプリケーションのprod環境のためにgenerate:appタスクによってこれはonにセットされます。

すべてのフロントコントローラーが同じディレクトリ(web/)にある場合、あきらかに、1つのアプリケーションと環境のみがこの設定をonにセットできます。 no_script_nameonにセットしたアプリケーションが複数ほしいのであれば、対応するフロントコントローラーをWeb公開ディレクトリのサブディレクトリのなかに移動させます。

lazy_cache_key

デフォルト: 新しいプロジェクトではon、アップグレードしたプロジェクトではoff

これが有効なとき、lazy_cache_key設定はアクションもしくはパーシャルがキャッシュ可能になるまでキャッシュキーの作成を遅延させます。 テンプレートパーシャルの使い方によって、これは大きなパフォーマンスの改善になります。

以前の1.2リリースとの後方互換性を壊さずにパフォーマンスを改善するために、この設定はsymfony 1.2.7で導入されました。 symfony 1.3では最適化は常に有効なのでこの設定は削除されます。

caution

この設定はsymfony 1.2.7とそれ以降でのみ利用可能です。

logging_enabled

デフォルト: prod以外のすべての環境に対してon

logging_enabled設定はロギングサブフレームワークを有効にします。 これをfalseに設定することでロギングメカニズムを回避し少しパフォーマンスが向上します。

tip

ロギングのきめ細かい設定はfactories.yml設定ファイルで行います。

web_debug

デフォルト: dev以外のすべての環境に対してoff

web_debug設定はWebデバッグツールバーを有効にします。 レスポンスのContent-TypeがHTMLであるときにWebデバッグツールバーがページに注入されます。

error_reporting

デフォルト:

  • prod: E_PARSE | E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR | E_USER_ERROR
  • dev: E_ALL | E_STRICT
  • test: (E_ALL | E_STRICT) ^ E_NOTICE
  • デフォルト: E_PARSE | E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR | E_USER_ERROR

error_reporting設定は(ブラウザに表示されログに書き込まれる)PHPのエラーレポートのレベルをコントロールします。

tip

ビット演算子の使い方に関する情報はPHPの公式サイトにあります。

デフォルト設定はもっとも利にかなったものであり、変えるべきではありません。

note

prod環境のフロントコントローラーはdebugを無効にしておりブラウザのエラー表示は自動的に無効になります。

compressed

デフォルト: off

compressed設定はPHPネイティブなレスポンス圧縮を有効にします。 onにセットされている場合、symfonyはob_start()用のコールバック関数としてob_gzhandlerを使います。

これはoffの状態にしておいて、代わりにWebサーバーのネイティブな圧縮メカニズムを使うことをおすすめします。

use_database

デフォルト: on

use_databaseはアプリケーションがデータベースを使うかどうかを決定します。

check_lock

デフォルト: off

check_lock設定はcache:clearproject:disableのようなタスクによって実行されるアプリケーションのロックシステムを有効もしくは無効にします。

onに設定される場合、無効なアプリケーションへのすべてのリクエストはsymfonyコアのlib/exception/data/unavailable.phpページに自動的にリダイレクトされます。

tip

config/unavailable.phpファイルをプロジェクトもしくはアプリケーションに追加することで無効なページ用のデフォルトテンプレートをオーバーライドできます。

check_symfony_version

デフォルト: off

check_symfony_versionはリクエストごとにsymfonyの現在のバージョンをチェックするのを有効もしくは無効にします。 有効な場合、symfonyがアップグレードされた際にキャッシュは自動的にクリアされます。

これをonにしないことが強く推奨されます。 小さなオーバーヘッドが発生するのと新しいバージョンのプロジェクトをデプロイする際にキャッシュをクリアするだけで済むからです。 この設定は複数のプロジェクトが同じsymfonyのコードを共有する場合のみ役に立ちますが、推奨されません。

web_debug_web_dir

デフォルト: /sf/sf_web_debug

web_debug_web_dirはWebデバッグツールバーのアセットへのWebパスをセットします (画像、スタイルシートとJavaScriptファイル)。

strip_comments

デフォルト: on

strip_commentsはコアクラスをコンパイルする際にsymfonyがコメントを除去するかを決定します。 アプリケーションのdebug設定がoffにセットされている場合のみこの設定が使われます。

運用環境でのみ空白のページを用意する場合、この設定をoffにセットしてみてください。

max_forwards

デフォルト: 5

max_forwards設定はsymfonyが例外を投げる前に許容される内部転送の最大回数をセットします。 これは無限ループを避けるためにあります。