cakephp2で設定ファイルを環境変数などで切り替え
開発環境とテスト環境などでファイルを別管理することがあるけど
デプロイとかは面倒なんで切り替えだけしたい
なんかプラグインとかあるらしいけど
ちょっと自力でやってみる
よーし
あとは読み込みをどうするかですが
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
なんか似たような名前のがいくつかあるのでどれが使えそうかは検証してみる
所感
業務などで開発している場合はデータベースのパスワードなどの設定情報が本番と異なることがあって適用時にチェックが無駄に増えているようなのはなんとかしたいと思う。
この方法で楽になるかは微妙だけど