CakePHPにおける本番/開発環境の切り替え方法について再考

CakePHP3がそろそろ出る中、CakePHPにおける本番/開発環境の切り替え方法について再考です。

.htaccessに判定用の環境変数を設定

ここ数年、CakePHPにおける本番/開発環境の切り替え方法としてCAKE_ENV_MODEみたいな環境変数.htaccessとかに設定して、それでCakePHP内部で条件分岐をしていたのですが、

いざCakeShellを使おうというときは別途シェル側でも環境変数を読まないといけない

というデメリットがあって、構築するシステムによっては2箇所に環境変数を設定しないといけないのが面倒だと思っていました。

Capistranoで本番用ファイルをアップロード

最近はCapistranoを利用してデプロイをすることもあるので、Capistrano側の機構でdatabase.phpbootstrap.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を上書きして活用するイメージ

メリットは以下のような感じ。

とりあえず

cakephp-environmentとphp-dotenv、どっちにしようか考え中です。

みなさんはどうやって本番/開発環境を切り替えていますか?