CakePHP::debug の値を動的に変更(開発用) 

開発中はdebug = 2 とかで行うと思うんですが、
いちいちデバッグや新機能追加の時に core.php変更するのもめんどくさいので、
リモートと、クライアントに応じて debug 値を動的に変更するようにちょっとだけいじります。

core.php内の $debug のあたり。

	Configure::write('debug', 0);

	if(isset($_SERVER)){
		if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1'  && ereg( 'Firefox' , $_SERVER['HTTP_USER_AGENT'])){  //ローカルホストからの場合デバッグモード
			Configure::write('debug', 2);
		};

	if($_SERVER['REMOTE_ADDR'] == '192.168.***.***'  &&  ereg( 'Firefox' , $_SERVER['HTTP_USER_AGENT'])){ //ローカルホストからの場合デバッグモード
			Configure::write('debug', 2);
		}
	};

3行目の *** の部分はリモート開発マシンのIPに置き換え。
これで、ローカルマシン(or リモート開発マシン)からのアクセス 且つ AGENTにFirefoxが含まれる場合のみdebugが 2 になります。簡易的ですが、結構つかえます。というか使ってます。
(開発はFirefox 動作テストはIEとかでやりたいときに便利)

※ただし たとえば AjaxでJSONの生データを吐き出すアクションの時は、
debug=2 だと、デバッグ情報が出力されてしまい、受信出来ません。ハマります。というかハマりました。

対策としては $this->layout=’json’ ; のときは beforeRender で

function beforeRender() {
  if ($this->layout == 'json') {
    Configure::write('debug', 0);
  } else {
    parent::beforeRender();
  }
}

とか入れておくといいかな。

まぁサービスインしたときはこれらの記述は全部消さないと危険。

One thought on “CakePHP::debug の値を動的に変更(開発用) ”

コメントを残す

メールアドレスが公開されることはありません。