#設定ファイルのロード
- グローバルな設定ファイル(/application/config/内)
- 現在の環境の設定ファイル(/application/config/環境名/内)
設定ファイルは上記の順にロードされる。
環境別ディレクトリ配下には、必要なファイルのみを置けばよい。
他はグローバル設定ファイルの内容が適用される。
#環境切り替え
$_SERVER['CI_ENV']の値もしくはpublic/index.phpの定数ENVIRONMENTの値設定で行う。
デフォルトはdevelopment。
ちなみに$_SERVER['CI_ENV']は apacheのSetEnvで設定できる。
<Directory "/var/www/html">
SetEnv CI_ENV development
</Directory>
##影響:エラーレポート
- development = エラーレポートがブラウザに表示される。
- production = エラーレポートは表示されない。
#影響:設定ファイル
/application/config/<環境名>/配下の設定ファイルもロードされる。
#複数環境の設定
1 . 開発用(application/config/development/)ディレクトリと製品用(application/config/production/)ディレクトリを作成。必要に応じてテスト用(application/config/testing/)ディレクトリも作成。
application/
└ config/ (直下はデフォルトの設定ファイル)
├ autoload.php
├ config.php
├ constants.php
├ database.php
├ ...
│
├ production/ (製品用)★作成
├ development/ (開発用)★作成
│
2 . 各ディレクトリ内に,環境によって変えたい設定ファイルをapplication/config内よりコピペして、設定内容を変更。
application/
└ config/
├ autoload.php
├ config.php
├ constants.php
├ database.php
├ ...
│
├ production/ (製品用)
│ ├ autoload.php ★作成
│ ├ config.php ★作成
│ ├ database.php ★作成
│ └ routes.php ★作成
│
├ development/ (開発用)
│ ├ autoload.php ★作成
│ ├ config.php ★作成
│ ├ database.php ★作成
│ └ routes.php ★作成
│
3 . public/index.phpの設定を以下のように設定。
if($_SERVER["SERVER_NAME"]=="localhost"){
// localhost -> development
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
}else{
// Others -> production
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');
}
4 . .gitignoreにapplication/config/development/*、application/config/production/*を記述して、管理から外す。
(database.phpのみを外すのでもOk。とりあえず、パスワードをコミットしちゃわないように。)
/application/config/production/*
/application/config/development/*
#database.phpのみの場合
/application/config/production/database.php
/application/config/development/database.php
#参考リンク