Help us understand the problem. What is going on with this article?

CakePHP 環境別設定ファイルの切り替えについて

More than 5 years have passed since last update.

はじめに

bootstrap.phpにドメインによって設定を切り替わる処理を記載していたのですが、
リリース事故が起きそうな気がしたので、色々試してみて、下記をアレンジした方法に落ち着きました。

参照:CakePHPで開発環境と本番環境の切り替え
app/Config/Env/以下に環境判別用のファイルを作成して、読み込む設定ファイルを切り替えます。
(開発環境は設定しなくてOK!)

組んでみる

下記のファイルを作成
・環境確認用:app/Config/Env/[CAKE_ENV] (空ファイルでOK)
・環境別設定ファイル:app/Config/[CAKE_ENV]/envConfig.php
・環境別DBファイル:app/Config/[CAKE_ENV]/database.php(app/Config/database.php.defaultのフォーマットでOK)

app/Config/bootstrap.php
<?php
require_once(APP . DS . 'Lib' . DS . 'Env.php');
Env::loadEnv();
Env::loadConfig();
app/Config/database.php
<?php
require_once Configure::read('CAKE_ENV') . DS . basename(__FILE__);
app/Lib/Env.php
<?php
Class Env {
    const DEV = 'Development';
    const STG = 'Staging';
    const PRO = 'Production';

    // デフォルト開発環境
    static function loadEnv() {
        $envList = array(self::PRO, self::STG, self::DEV);
        foreach ($envList as $env) {
            if (is_file(APP . 'Config' . DS . 'Env' . DS . $env)) {
                break;
            }
        }
        Configure::write('CAKE_ENV', $env);
    }

    static function loadConfig() {
        $envPath = APP . 'Config' . DS . Configure::read('CAKE_ENV') . DS . 'envConfig.php';
        if (is_file($envPath)) {
            include_once $envPath;
        }
        else {
            echo 'file is not found ' . $envPath;
            exit;
        }
    }
}

最後に

app/Config/Envをコミットしなければ、設定ファイル切り替えによる事故はない!(はず)
開発環境ではapp/Config/Envを設定しなくても良いので、コミットしてしまうこともなさそうです。

terumichi1209
WEBエンジニアです!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした