m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

cakephp2で設定ファイルを環境変数などで切り替え

開発環境とテスト環境などでファイルを別管理することがあるけど

デプロイとかは面倒なんで切り替えだけしたい

なんかプラグインとかあるらしいけど

ちょっと自力でやってみる

f:id:m_shige1979:20150204064623p:plain

よーし

あとは読み込みをどうするかですが
bootstrap.phpで初期処理を行っているはずなのでここでenvを読み込むようにします

app/Config/bootstrap.php

// 最後尾に追加
require_once(APP . "/Config/Env/env.php");

でenv.phpでは環境変数を読み込んでその値で読み込むディレクトリのファイルを切り替えます

app/Config/Env/env.php

<?php
/**
 * 環境別ファイル読み込み
 */
// 環境変数データ取得
$env = env("CAKE_ENV");

if($env == "dev"){
    /**
     * 開発環境用設定ファイルを読み込む
     */
    $_path = APP . "/Config/Env/Dev/";
    // 定数
    require_once($_path . "const.php");
    // 個別BootStrap
    require_once($_path . "bootstrap.php");

}else if($env == "staging"){
    /**
     * ステージング環境用設定ファイルを読み込む
     */
    $_path = APP . "/Config/Env/Staging/";
    // 定数
    require_once($_path . "const.php");
    // 個別BootStrap
    require_once($_path . "bootstrap.php");

}else{
    /**
     * 本番環境用設定ファイルを読み込む
     */
    $_path = APP . "/Config/Env/Production/";
    // 定数
    require_once($_path . "const.php");
    // 個別BootStrap
    require_once($_path . "bootstrap.php");

}

// debug
var_dump(
    $_path,
    HOGE,
    Configure::read('hoge')
);

開発環境やテスト環境では”dev”や"staging"のような値を指定して本番環境はそれ以外で対応する
あとは開発しながら必要な設定ファイルを読み込むように追加していけばいいはず…
設定ファイルが肥大化しそうなら分割したりしてみることも必要かも

まあ他の方法としてプラグインもあるらしいそちらも見てみよう
https://github.com/josegonzalez/cakephp-environments
https://github.com/nojimage/cakephp-environment

なんか似たような名前のがいくつかあるのでどれが使えそうかは検証してみる

所感

業務などで開発している場合はデータベースのパスワードなどの設定情報が本番と異なることがあって適用時にチェックが無駄に増えているようなのはなんとかしたいと思う。
この方法で楽になるかは微妙だけど