CakePHPで開発環境毎に設定を変更する方法

DSC00175

2013年12月11日(水)

祭りじゃーーーーー!

CakePHP祭りじゃーーー!

結構WEBでも多いのですが散乱しているので、まとめてきな意味を込めてフォーユー。

 

これは、CakePHPでローカル環境や、テスト環境、本番環境と、環境毎に設定を書き換える手間を大幅に削減する方法です。

設定値はすべてCakePHPの設定ファイルで管理することにより、あらかじめ制御を仕込んでおけば以降楽ができます。

 

設定ファイルで指定

コンフィグに開発環境を指定しておく。

対象ファイル:/app/Config/bootstrap.php

	// 環境設定
	Configure::write('environment', 'test');		// production・development・test

ここで「production・development・test」と3つの環境を使い分けれるようにします。

今回はtestと記述しておりますが、本番環境へ上げる際は該当箇所productionへ変更するだけです。

 

データベースも環境毎に変更する

上記で設定した環境設定をデータベース側にも反映させてあげましょう。

多くの場合、ローカル環境と本番環境で設定値が異なると思いますのでここで一度に設定しておき、先述した設定ファイルの値で制御してやるのがベターやないやろうか。

対象ファイル:/app/Config/database.php

	/**
	 * コンストラクタ
	 *
	 */
	public function __construct()
	{
		$connection = Configure::read('environment');

		if (!empty($this->{$connection})) {
			$this->default = $this->{$connection};
		}
	}

	// 本番
	public $default = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => '本番環境',
		'login' => '本番環境',
		'password' => '',
		'database' => '',
		'prefix' => '',
		'encoding' => 'utf8',
	);

	// 開発用
	public $development = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => '開発環境',
		'login' => '開発環境',
		'password' => '',
		'database' => '',
		'prefix' => '',
		'encoding' => 'utf8',
	);

	// テスト用
	public $test = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'テスト環境',
		'login' => 'テスト環境',
		'password' => '',
		'database' => '',
		'prefix' => '',
		'encoding' => 'utf8',
	);

 

環境設定値を判断する

設定ファイルに定義したので、あとはアプリケーション側で下記のようにしていして、設定値を取得し、制御を変更する事ができますね。

$connection = Configure::read('environment');

結構いまだに、こんな簡単な設定も施さないまま開発してしまって、あとで火の車になる方たちがいるようなので、めんどくさがらずに都度コピペでもしてしまいましょう。

 

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR