CakePHPにおける本番/開発環境の切り替え方法について再考
CakePHP3がそろそろ出る中、CakePHPにおける本番/開発環境の切り替え方法について再考です。
.htaccessに判定用の環境変数を設定
ここ数年、CakePHPにおける本番/開発環境の切り替え方法としてCAKE_ENV_MODE
みたいな環境変数を.htaccess
とかに設定して、それでCakePHP内部で条件分岐をしていたのですが、
いざCakeShellを使おうというときは別途シェル側でも環境変数を読まないといけない
というデメリットがあって、構築するシステムによっては2箇所に環境変数を設定しないといけないのが面倒だと思っていました。
Capistranoで本番用ファイルをアップロード
最近はCapistranoを利用してデプロイをすることもあるので、Capistrano側の機構でdatabase.php
やbootstrap.php
などの本番用ファイルをアップロードするということもしました。
なかなか良い感じなんですがいまいひとつ。「このファイルはこのディレクトリに、このファイルはこのディレクトリに」という感じがいまひとつ。
cakephp-environment
https://github.com/nojimage/cakephp-environment
@nojimage さん謹製のファイルベースの環境切り替えプラグイン
詳しいドキュメントは こちら
メリットは以下のような感じ。
- 環境用ファイルを置くだけで本番/開発環境の切り替えができる。CakeShellでもOK
- @nojimageに聞いたところ「かなり活用している」ので実績ありとみてよい
- ドキュメントが素晴らしい
- CakePHPとの親和性が高い
- CakePHP界隈の人が作ってる
php-dotenv
https://github.com/josegonzalez/php-dotenv
@josegonzalezさん謹製のファイルベースの環境変数読み込みライブラリ
.env
ファイルに保存した情報を読み込んで$_ENV
や$_SERVER
を上書きして活用するイメージ
メリットは以下のような感じ。
- Rubyと親和性高い ( https://github.com/bkeepers/dotenv )
- Capistranoと親和性高い ( https://github.com/bkeepers/dotenv#capistrano-integration )
- php-dotenvを活用した app-template なんてのもある
- CakePHPに依存しない
- やっぱりCakePHP界隈の人が作ってる
とりあえず
cakephp-environmentとphp-dotenv、どっちにしようか考え中です。
みなさんはどうやって本番/開発環境を切り替えていますか?