CakePHP3で開発環境のみデバッグを有効にする

最近は、CakePHP駆け込み寺に参加してみたり、CakePHPで自分用アプリを開発してみたり、CakePHPへの回帰を進めているところです。開発環境はCygwinで、コンソールからビルドインサーバを起動させてやっています。そろそろ実用できそうなとこまできたので、開発環境だけデバッグを有効にしようと考え、いい方法ができたので共有しておきます。

環境はCygwinでもLinuxでもいいんだけど、コンソールからCakePHPのビルドインサーバを起動させて開発している前提です。

まずは切り替え機能を組み込みます。といっても、元からある機能をアレンジするだけです。

$ svn di ../config/app.php
Index: ../config/app.php
===================================================================
--- ../config/app.php   (リビジョン 10)
+++ ../config/app.php   (作業コピー)
@@ -9,7 +9,7 @@
      * Development Mode:
      * true: Errors and warnings shown.
      */
-    'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),
+    'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN),

     /**
      * Configure basic information about the application.

srcディレクトリからsvn diを見てます。元はデバッグモードのデフォルトがtrueなんだけど、それをfalseに変更しました。env()はCakePHPのグローバル関数で、環境変数$_ENVだけでなく、$_SERVERも見てくれるそうです。シェル起動でもPHP_SELFやDOCUMENT_ROOTをエミュレートしてくれるので奨励されています。
Constants & Functions — CakePHP Cookbook 3.x documentation.

で、後は環境変数かなんかで設定してあげればOK。

$ DEBUG=true ./bin/cake server

これで環境変数DEBUGに文字列trueが入った状態でビルドインサーバが起動するので、ブラウザから見るとデバッグモードが有効になっているはずです。

書いてて思ったけど、たぶんApacheから起動している場合でもSetEnvで環境変数を設定したらいけるかも?

SetEnv DEBUG true

サーバ設定でも、.htaccessでも、どちらでも。気が向いたら試してみよう。