symfony のコンフィギュレーションの大半は YAML もしくはプレーンな PHP で書かれた設定ファイルを通じて変更できます。この章では settings.yml ファイルを説明します。
アプリケーションの settings.yml ファイルは apps/APP_NAME/config/ ディレクトリに配置されています。
設定ファイルの原則の章で述べたように、settings.yml ファイルでは、環境が認識され、コンフィギュレーションカスケードのメカニズムがはたらいています。
それぞれの環境には2つのサブセクション (.actions と .settings) が設けられています。共通ページにおいてレンダリングされるデフォルトのアクション以外、すべてのコンフィギュレーションディレクティブは .settings サブセクションにとりそろえられています。
note
settings.yml ファイルのキャッシュは PHP ファイルとして保存されます。処理は sfDefineEnvironmentConfigHandler クラスにゆだねられます。
設定
.actions.settings
.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 セクションで定義されているすべての設定項目の名前は設定の名前にプレフィックスの sf_ をつけたものであり、sfConfig オブジェクトを通じて任意の場所で利用できます。たとえば charset 設定の値を得るには、コードを次のように書きます。
sfConfig::get('sf_charset');
escaping_strategy
デフォルト: true
escaping_strategy 設定は出力エスケーパサブフレームワークを有効にするかどうかを決めます。この設定はブール値をとります。この設定が有効な場合、escaping_method 設定で定義されているヘルパー関数が呼び出され、テンプレートのなかで利用可能なすべての変数は自動的にエスケープされます (下記の説明をご参照ください)。
escaping_method 設定がデフォルトのヘルパーであることにご注意ください。ケースバイケースでこの設定をオーバーライドすれば、たとえば JavaScript スクリプトタグのなかで変数を出力するなどの状況に対処できます。
出力エスケーパサブフレームワークはエスケープの際に charset 設定を使います。
設定の値はデフォルトの true のままにしておくことをぜひおすすめします。
tip
アプリケーションを generate:app タスクで作る際に --escaping-strategy オプションを指定すれば、エスケープは自動的に有効になります。
escaping_method
デフォルト: ESC_SPECIALCHARS
escaping_method 設定はテンプレートのなかでエスケープに使われるデフォルトの関数を定義します (上記の escaping_strategy 設定をご参照ください)。
組み込み関数の1つを選ぶ、もしくは自前の関数を作ることができます (ESC_RAW、ESC_ENTITIES、ESC_JS、
ESC_JS_NO_ENTITIES と ESC_SPECIALCHARS)。
ほとんどの場合、デフォルトで事足ります。英語もしくはヨーロッパの言語だけを扱う場合には ESC_ENTITIES ヘルパーを選ぶこともできます。
csrf_secret
デフォルト: ランダムに生成される秘密の文字列
csrf_secret 設定はアプリケーションにおいて一意性のある秘密の文字列です。この設定に false がセットされていないかぎり、フォームフレームワークで定義されているすべてのフォームで CSRF 対策機能が有効になります。この設定は link_to() ヘルパーにも使われ、リンクをフォームに変換することが必要な場合に役立ちます (たとえば HTTP DELETE メソッドをシミュレートしたい場合)。
デフォルトをあなたが選んだ一意性のある秘密の文字列に変更しておくことをぜひおすすめします。
tip
generate:app タスクでアプリケーションを作る際に --csrf-secret オプションを指定すれば、CSRF 対策機能は自動的に有効になります。
charset
デフォルト: utf-8
charset 設定はフレームワークのあらゆる場所で使われる文字集合を指定します。この設定の利用範囲はレスポンスの Content-Type ヘッダーから出力エスケーピングまでおよびます。
ほとんどの場合、デフォルトで事足ります。
warning
この設定の値はフレームワークのさまざまな場所で使われるので、複数の場所に保存されます。この設定を変更した後では、開発環境であっても、コンフィギュレーションのキャッシュをクリアしなければなりません。
enabled_modules
デフォルト: [default]
enabled_modules 設定はこのアプリケーションで有効にするモジュールの名前の配列です。デフォルトでは、プラグインもしくは symfony コアで定義されているモジュールは有効ではなく、これらにアクセスできるようにするには、この配列につけ加えなければなりません。
モジュールの追加方法はシンプルで、リストに名前を加えるだけです (モジュールの順序は問いません)。
enabled_modules: [default, sfGuardAuth]
settings.yml ファイルの .actions サブセクションであらかじめ定義されているすべてのデフォルトアクションは symfony フレームワークの default モジュールに収められています。これらすべてをカスタマイズし、この設定から default モジュールを除外しておくことをおすすめします。
default_timezone
デフォルト: なし
default_timezone 設定は PHP が使うデフォルトのタイムゾーンを定義します。この設定は PHP が認識する任意のタイムゾーンをとります。
note
タイムゾーンは php.ini ファイルのなかで設定しておくことをおすすめします。そうでなければ、symfony は PHP の date_default_timezone_get() 関数を呼び出して、最善のタイムゾーンを推測します。
cache
デフォルト: false
cache 設定はテンプレートのキャッシュを有効もしくは無効にします。
tip
キャッシュシステム全体のコンフィギュレーションを変更できる場所は factories.yml ファイルの view_cache_manager と view_cache セクションです。コンフィギュレーションをきめ細かく調整できる場所は cache.yml ファイルです。
etag
デフォルト: dev と test 環境を除いて、デフォルトでは true
etag 設定は HTTP の ETag ヘッダーの自動生成を有効もしくは無効にします。レスポンスのコンテンツにおいて、symfony によって生成される ETag ヘッダーは単純な md5 のハッシュです。
i18n
デフォルト: false
i18n 設定は国際対応サブフレームワークを有効もしくは無効にします。この設定はブール値をとります。国際対応したアプリケーションを開発するのであれば、この設定に true をセットします。
tip
国際対応システム全般において、コンフィギュレーションを変更できる場所は factories.yml ファイルの i18n セクションです。
default_culture
デフォルト: en
default_culture 設定は国際対応サブフレームワークで使われるデフォルトのカルチャを定義します。この設定は任意の有効なカルチャの文字列をとります。
standard_helpers
デフォルト: [Partial, Cache]
standard_helpers 設定はすべてのテンプレートのなかでロードされるヘルパーグループの配列です (ヘルパーグループの名前にはサフィックスの Helper をつけません)。
no_script_name
デフォルト: 新しいアプリケーションの prod 環境では true、それ以外の環境では false
no_script_name 設定は生成される URL にフロントコントローラスクリプトの名前をつけ足すかどうかを決めます。generate:app タスクによって作られた新しいアプリケーションの prod 環境において、この設定には true がセットされています。
すべてのフロントコントローラが同じディレクトリ (web/) に配置されている場合、この設定に true をセットできるのはあきらかに1つのアプリケーションと環境にかぎられます。no_script_name 設定に true がセットされているアプリケーションが複数必要であれば、該当するフロントコントローラを Web 公開ディレクトリに移動させます。
lazy_cache_key
デフォルト: 新しいプロジェクトでは true、アップグレードしたプロジェクトでは false
lazy_cache_key 設定が有効な場合、キャッシュキーの生成はアクションもしくはパーシャルがキャッシュ可能になるまで延期されます。テンプレートパーシャルの使いかたしだいではパフォーマンスを大きく改善できます。
file_link_format
デフォルト: なし
デバッグメッセージにおいて、sf_file_link_format 設定もしくは PHP の xdebug.file_link_format ディレクティブに値がセットされている場合、ファイルパスはクリック可能なリンクに変換されます。たとえば、ファイルが TextMate で開かれるようにしたいのであれば、次の値をセットします。
txmt://open?url=file://%f&line=%l
%f プレースホルダはファイルの絶対パスに置き換わり、%l プレースホルダは行番号に置き換わります。
logging_enabled
デフォルト: prod 以外のすべての環境では true
logging_enabled 設定はロギングサブフレームワークを有効にします。この設定に false がセットされていれば、ロギングメカニズムが回避され、パフォーマンスが少し改善されます。
tip
ロギングのコンフィギュレーションをきめ細かく調整できる場所は factories.yml ファイルです。
web_debug
デフォルト: dev 以外のすべての環境では false
web_debug 設定はデバッグツールバーを有効にします。レスポンスの Content-Type ヘッダーに HTML がセットされている場合、デバッグツールバーがページに投入されます。
error_reporting
デフォルト:
prod: E_PARSE | E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR | E_USER_ERRORdev: E_ALL | E_STRICTtest: (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
デフォルト: false
compressed 設定は PHP ネイティブなレスポンス圧縮を有効にします。この設定に true がセットされている場合、ob_gzhandler() 関数が ob_start() 関数のコールバックに使われます。
この設定に false をセットしておいたままにしておいて、Web サーバーに備わっている圧縮メカニズムを利用することをおすすめします。
use_database
デフォルト: true
use_database 設定はアプリケーションでデータベースを使うかどうかを決めます。
check_lock
デフォルト: false
check_lock 設定は cache:clear や project:disable タスクなどによって実行されるアプリケーションのロックシステムを有効もしくは無効にします。
この設定に true がセットされている場合、無効なアプリケーションへのリクエストはすべて自動的に symfony コアの lib/exception/data/ ディレクトリに配置されている unavailable.php ページにリダイレクトされます。
tip
config/unavailable.php ファイルをプロジェクトもしくはアプリケーションに追加すれば、アプリケーションが無効なときに表示されるページのデフォルトテンプレートをオーバーライドできます。
web_debug_web_dir
デフォルト: /sf/sf_web_debug
web_debug_web_dir 設定には Web サイトにおけるデバッグツールバーのアセット (画像、スタイルシートそして JavaScript ファイル) へのパスがセットされます。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.