symfonyのほとんどはYAMLもしくはプレーンなPHPで書かれた設定ファイルを通して設定できます。
このセクションでは、アプリケーション用のメインの設定ファイルである、settings.ymlを説明します。
アプリケーション用のメインのsettings.yml設定ファイルはapps/APP_NAME/config/ディレクトリで見つかります。
はじめの章で説明したように、settings.ymlファイルは環境を認識し、コンフィギュレーションカスケードのメカニズムが有効になります。
それぞれの環境は2つのサブセクション: .actionsと.settingsを持ちます。
共通ページ用にレンダリングされるデフォルトのアクション以外、すべての設定ディレクティブは.settingsサブセクションの下で機能します。
note
settings.yml設定ファイルはPHPファイルとしてキャッシュされます;
プロセスはsfDefineEnvironmentConfigHandlerクラスによって自動的に管理されます。
設定
.actions.settingscachecharsetcheck_lockcheck_symfony_versioncompressedcsrf_secretdefault_culturedefault_timezoneenabled_moduleserror_reportingescaping_strategyescaping_methodetagi18nlazy_cache_keylogging_enabledno_script_namemax_forwardsstandard_helpersstrip_commentsuse_databaseweb_debugweb_debug_web_dir
.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_SPECIALCHARS、ESC_RAW、ESC_ENTITIES、ESC_JS、ESC_JS_NO_ENTITIESとESC_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_managerとview_cacheセクションで行われます。
きめ細かい設定はcache.yml設定ファイルで行います。
etag
デフォルト: devとtest環境を除いて、デフォルトでは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_nameをonにセットしたアプリケーションが複数ほしいのであれば、対応するフロントコントローラーを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_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
デフォルト: off
compressed設定はPHPネイティブなレスポンス圧縮を有効にします。
onにセットされている場合、symfonyはob_start()用のコールバック関数としてob_gzhandlerを使います。
これはoffの状態にしておいて、代わりにWebサーバーのネイティブな圧縮メカニズムを使うことをおすすめします。
use_database
デフォルト: on
use_databaseはアプリケーションがデータベースを使うかどうかを決定します。
check_lock
デフォルト: off
check_lock設定はcache:clearとproject: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が例外を投げる前に許容される内部転送の最大回数をセットします。
これは無限ループを避けるためにあります。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.