シェアする

  • このエントリーをはてなブックマークに追加

[CakePHP]開発環境だけdebug値を2にする

連載の第1回をお送りしてから1週間経ちましたが、記事を書く気力と時間が生まれないので小ネタ投下していきますヽ(`Д´)ノ(はてブやFacebookコメントが付くと書かなきゃ!って気持ちになると思うんですけど)

それでは本題。
CakePHPの開発環境でdebug = 2 を設定したまま、それを誤って公開してしまうことありませんか?無いですか。そうですか。

でも人間なら、ついやっちまうことってありますよね?
仮にやっちまった*[1] とすると、SQLのクエリやセッションの中身まで晒してしまうことになるので、セキュリティ上も精神衛生上も好ましくありません。

なので、僕は次のようにしてこの問題に対処しています。

core.phpにローカル環境だけdebug値が2になるように設定する

core.php

	Configure::write('debug', 0);
	if (env("SERVER_ADDR") == "127.0.0.1") {
		// local
		Configure::write('debug', 2);
	}

SERVER_ADDRがループバック・アドレス(自分のPCをさす特殊なローカルIPアドレス)だったらdebug値を2にしています。

この設定をしておけばサーバが自分自身の場合を除いてdebug値は0になりますので安心です。
もし別の開発用サーバなどを利用している場合はループバックアドレスを開発サーバのIPアドレスにすればOK。

応用編

自分の開発環境のグローバルIPが固定なら、次のように設定すると自分から見たときだけデバッグ値を2できます。

	Configure::write('debug', 0);
	if (env("SERVER_ADDR") == "127.0.0.1") {
		// local
		Configure::write('debug', 2);
	} elseif (env("REMOTE_ADDR") == "***.***.***.***") {	// ***.***.***.***は開発環境のグローバルIPアドレス
		// 開発環境
		Configure::write('debug', 2);
	}

注意点

賢明な皆さんならやらないと思いますが、

	Configure::write('debug', 2);
	if (env("SERVER_ADDR") == "***.***.***.***") {	// ***.***.***.***は公開環境のIPアドレス
		// Web
		Configure::write('debug', 0);
	}

こうするとやばいので注意w

さくらインターネットのレンタルサーバで、何を思ったか上記の書き方をしてしまったことがあります。そしたら突然サーバのIPアドレスが変わった事があって普通にDebugKitが表示されていたという・・・σ(^_^; )

こういう設定はまずdenyして、それからallowするのが鉄則ですよね。そんなことも知らなかった若き日のおもひで。

  1. debug = 2のまま公開してしまう []

シェアする

  • このエントリーをはてなブックマークに追加

フォローする