Home > CakePHP | PHP > CakePHP 環境に応じてDBの設定を変える

CakePHP 環境に応じてDBの設定を変える

この記事の所要時間: 350

本番環境や開発環境など環境に応じてDBの設定を変える方法です。

1.AppModelを書き換える

withcakeで紹介されている方法です。

AppModelのコンストラクタで切り替えるアイデアは分かりやすくて良いと思います。ちなみに記事のコメントにもあったのですが、記事のコードだとコンストラクタの引数がModelへ渡されませんので、修正版を以下に書いておきます。

[app/app_model.php]

class AppModel extends Model {
  function __construct($id = false, $table = null, $ds = null) {
    $this->useDbConfig = $_SERVER['HTTP_HOST'] == 'devserver'?'test':'default';
    parent::__construct($id, $table, $ds);
  }
}

2.database.phpを書き換える

NoswaDで紹介されている方法です。

cakebakerでも書かれていますが、database.phpは設定ファイルなので、これにコードを入れるのは若干抵抗を感じます。(まあdatabase.phpがなぜクラスになっているのか?という考えもありますが。)

3.Subversionで切り替える

cakebakerで紹介されている方法です。

I try to avoid to add code to configuration files because those files shouldn’t contain any logic. Instead I use Subversion to manage different configurations. In my repository I have at least two folders for each project: a “trunk” folder where the development happens, and a “live” folder which contains the code (and configurations) for the live application. So if I put something online I just export the content of the “live” folder from the repository, and with it the “live” configuration.

cakebaker » An alternative to “hacking” config files (2006-09-17)

「Subversion使えよ。なんでハックなんかやってるの?」と言ったところでしょうか。:)詳しい実践方法の記述が無いので的外れの可能性大ですが、これだとtrunk/とlive/でコードが別々になるような気がするのですが、どうなんでしょうか。

4.環境変数で切り替える

1.の変形版です。開発環境ではIPが変わる事があるので、環境変数で切り替える方法を考えてみました。これなら実行環境のIPがどうなろうと影響を受けません。

[httpd.conf]


SetEnv CAKE_DB_CONFIG test

[app/app_model.php]

< ?php
class AppModel extends Model {
  function __construct($id = false, $table = null, $ds = null) {
    $this->useDbConfig = empty($_SERVER['CAKE_DB_CONFIG']) ? 'default' : $_SERVER['CAKE_DB_CONFIG'];
    parent::__construct($id, $table, $ds);
  }
}
?>

httpd.confで環境変数CAKE_DB_CONFIGを定義しておけば、その値をuseDbConfigに使用し、定義がなければ’default’を使用します。使い方としては本番環境が’default’で、開発環境等の他の環境は’dev’等を定義する形を考えています。

Pocket

follow us in feedly

トラックバック:5

このエントリーのトラックバックURL
http://www.1x1.jp/blog/2006/09/cakephp_db_config.html/trackback
Listed below are links to weblogs that reference
CakePHP 環境に応じてDBの設定を変える from Shin x blog
pingback from toyosystem | テスト環境から本番環境へのファイル適用 08-01-26 (土) 15:22

[…] CakePHP 環境に応じてDBの設定を変える | Shin x blog http://www.1×1.jp/blog/2006/09/cakephp_db_config.html […]

pingback from CakePHP 環境によってデータベースを切り替える | Sun Limited Mt. 08-03-31 (月) 16:48

[…] CakePHP 環境に応じてDBの設定を変える | Shin x blog で色々な方法が紹介されています。 […]

pingback from [CakePHP]運用と開発の切り替えを行った - すごい速さ 11-01-24 (月) 0:41

[…] これは、 CakePHP 環境に応じてDBの設定を変える […]

pingback from CakePHPで開発環境と本番環境の複数ファイル切り替え | Beyond prep 12-01-17 (火) 11:46

[…] 以下にある環境変数で入れ替える方法を参考にしました。 http://higelog.brassworks.jp/?p=366 http://www.1×1.jp/blog/2006/09/cakephp_db_config.html […]

pingback from CakePHP 環境によってデータベースを切り替える | Sun Limited Mt. | XO2 12-04-09 (月) 17:42

[…] CakePHP 環境に応じてDBの設定を変える | Shin x blog で色々な方法が紹介されています。 […]

Home > CakePHP | PHP > CakePHP 環境に応じてDBの設定を変える

検索
フィード
メタ情報

Return to page top