CodeIgniter – 開発環境と本番環境のDB接続切り替え

CodeIgniterで小規模なシステムの開発を始めました。

本番環境とは別にテスト環境としても利用する開発環境を構築することにしましたが、接続先データベースなどが異なるので設定の切り分けをしなければなりません。

色々調べてやったことを書いておきます。

 

1.ディレクトリを分ける

流れとしては下記の通りです。

  1. “application/config”の中に”development”と”production”というディレクトリを作成。
  2. “application/config/database.php”を作成したそれぞれのディレクトリ内へコピー。
  3. 開発環境・本番環境で接続するDB情報をそれぞれのdatabase.phpに書く。

application/config/development/database.php

$db['development'] = array(
  'dsn' => '',
  'hostname' => 'localhost',
:

application/config/production/database.php

$db['production'] = array(
  'dsn' => '',
  'hostname' => 'localhost',
:

 

2.htaccessで環境変数を設定

index.phpの中を確認すると

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

という記述があり、CI_ENVという環境変数があれば、それを設定するようになっています。

この環境変数を設定する為の.htaccessを作成し、それぞれの環境のアプリケーションディレクトリのルート(index.phpがある場所)へ転送します。

開発環境用”.htaccess”

SetEnv CI_ENV development

本番環境用".htaccess"

SetEnv CI_ENV production

 

試していませんが、環境変数ではなくドメインでの判別にするというのもありかもしれません。.htaccessを作る分だけ楽に出来ますね。

タイトルとURLをコピーしました