【Symfony2】サーバー別でパラメーターを設定
Symfony2自体は、環境(prod、test、dev)別で設定ファイルを読み込む機能があります。
app/AppKernel.phpに、下記のfunctionがあります。
1 2 3 4 | public function registerContainerConfiguration(LoaderInterface $loader) { $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');// $this->getEnvironment()はprod、test、devの文字列のいずれ } |
それをサーバー(Host)別に改造することはできます。
1 2 3 4 5 6 7 8 9 10 | public function registerContainerConfiguration(LoaderInterface $loader) { if (false === strpos($_SERVER['HTTP_HOST'], "stg")) { // stgサーバーではなければ、config_{env}.ymlファイルを読み込む $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); } else { // stgサーバーであれば、stg_config_{env}.ymlファイルを読み込む $loader->load(__DIR__.'/config/stg_config_'.$this->getEnvironment().'.yml'); } } |
今回紹介したいのは、上記とは別の方法で、apacheでパラメーターを設定する方法です。
apacheの設定ファイル(/etc/httpd/conf/httpd.confなど、.htaccessでも可)に、setEnvを使います。
1 2 3 | SetEnv SYMFONY__DATABASE__HOST 127.0.0.1 SetEnv SYMFONY__DATABASE__USER db_user SetEnv SYMFONY__DATABASE__PASSWORD db_pass |
Symfony2では、apacheの環境変数で、名前が「SYMFONY」を始めるものを認識することができます。
例えば、SYMFONY__DATABASE__HOSTが、%database.host%として認識されるので、
config_{env}.ymlファイルに、
1 2 3 4 5 6 7 8 9 | doctrine: dbal: driver: pdo_mysql host: %database.host% port: 3306 dbname: db_name user: %database.user% password: %database.password% charset: UTF8 |
で書けば、apacheの環境変数を認識して、DBに接続してくれるはずです。
●参考リンク
stackoverflow
Author Profile
スターフィールド編集部
SHARE