CakePHP3のデバッグキット(DebugKit)を強制的に有効、無効に変更する方法
2019/03/02
CakePHP3のデバッグキットを強制的に有効、無効の切り替えを行う方法
CakePHP3には、強力なデバッグツールとして「デバッグキット(DebugKit)」が付属しています。
これを強制的に有効化したり、無効化したりする方法を解説します
CakePHP3のデバッグキットを強制的に有効にする方法
CakePHP3でプログラム開発をしている際、デバッグキットが表示されていませんでした。
その調査の過程で、エラーログ(/logs/error.log)を見ると、下記のようなワーニングメッセージが出力されていました。
Warning: DebugKit is disabling itself as your host
www.ドメイン.com
is not in the known safe list of top-level-domains (localhost, dev, invalid, test, example, local). If you would like to force DebugKit on use the DebugKit.forceEnable
Configure option.
ざっくり要約すると、下記のような感じです。
「ドメインが開発サイト用のものではないので、デバッグキットの起動を停止します。
強制的にデバッグキットを使う場合は、「DebugKit.forceEnable」の設定をしてください。」
デバッグキットは、開発環境では動作しても、本番環境では動作しないようにしておく必要があります。
そのため、あらかじめ開発環境でありがちなトップレベルドメインとして「localhost, dev, invalid, test, example, local」が設定されており、その場合はデバッグツールが有効になり表示されます。
それ以外の場合は、開発環境ではないとして、デバッグキットは表示されない仕様になっています。
つまり、デバッグキットが表示されないのは、トップレベルドメインが「localhost, dev, invalid, test, example, local」ではないので、開発環境として認識されていない、ということです。
そのため、対応方法としては下記のいずれかになります。
- 開発用のトップレベルドメイン「localhost, dev, invalid, test, example, local」のリストに追加する
- 強制的に有効にする「DebugKit.forceEnable」の設定をする
開発用のトップレベルドメインのリストに追加する
前者の設定は、「/vendor/cakephp/debug_kit/src/toolbarservice.php」の 134行目に以下の記述があります。
1 |
$safeTopLevelDomains = ['localhost', 'dev', 'invalid', 'test', 'example', 'local']; |
この配列に求めるドメインのトップレベルドメインを追加することで対応することができます。
ただし、トップレベルドメインですので、「www.example.com」というドメインの場合は、「.com」がトップレベルドメインとなりますので、テスト環境だけを指定するのはなかなか難しそうです。
ソースコードを確認すると、ホスト名を取得し、「.」で区切った一番最後の文字列を取得して、それをトップレベルドメインとしていました。
なので「www.ドメイン.com」の場合は、「.com」がトップレベルドメインになります。
強制的に有効にする「DebugKit.forceEnable」の設定をする
そのため、普通は、2つ目の項目の「DebugKit.forceEnable」の設定をすることになります。
「DebugKit.forceEnable」を設定する具体的な対処する内容は、「/config/app.php」に下記を追加すれば OKです。
1 2 3 |
'DebugKit' => [ 'forceEnable' => true, ], |
追加する場所は、「app.php」内のどこでも問題ありませんが、本番に移す際はデバッグキットを使用しないように変更する必要がありますので、ファイルの一番最後などに分かりやすく書いておく方がいいでしょう。
CakePHP3のデバッグキットを強制的に無効にする方法
デバッグキットを強制的に有効にする方法を紹介しましたので、ついでに、強制的に無効にする方法も紹介しておきます。
デバッグキットを強制的に無効にする場合は、設定ファイル「/config/app.php」に記述してある内容を、下記の様に変更します。
1 2 3 4 5 |
// 変更前 'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN), // 変更後 'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN), |
「app.php」の 12行目辺りにある設定を、「true」から「false」に変更します。
ただ、先に書いたとおり、一般的なドメインで運用しているサイトは、デバッグキットは無効になりますので、わざわざ強制的に無効にしなくても問題ないと言えます。
CakePHP3の関連記事
CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールするCakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
その他の「CakePHP3」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4でテンプレートやレイアウトファイルをデフォルトから変更する場合は「render()」を使用するが、記述場所はできるだけコントローラー内の最後の方に書く方がいい。
-
-
CakePHP3、CakePHP4のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
CakePHP3、CakePHP4では処理を高速化する手法の一つとしてキャッシュを利用している。しかし、その情報は元の情報を更新しても反映されない場合がある。そんなときはキャッシュを削除する必要がある。
-
-
CakePHP3のビューで受取ったテーブルのオブジェクトを連想配列に変換する方法
コントローラーからビューに送ったテーブルのオブジェクトを連想配列に変換し、ビューの中で自由に使えるようにするメソッド「toArray()」の解説。連想配列に変換できれば利用度アップ!
-
-
URL短縮サービス「TTTオンライン(https://ttt.onl)」公開
URL短縮サービス「TTTオンライン(https://ttt.onl)」を公開。メールやSNSでは使いにくい長いURLを短いURLに変換するサービス。QRコードも。Google URL Shortenerが2019年3月にサービス終了。
-
-
CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応
CakePHP3のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。
-
-
CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法
CakePHP3の標準設定のタイムゾーンは「UTC(協定世界時)」に設定されている。これを日本標準時に変更する方法(app.php、bootstrap.phpの変更方法)の解説。
-
-
CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
CakePHP5のヘルパーで他のヘルパーを読み込む方法を解説。公式の日本語CookbookはCakePHP4のソースのままで間違っているため注意が必要。CakePHP4からの移行の際も同じ点に注意が必要。
-
-
CakePHP4 のコマンドプログラムからコンポーネントを読み込む方法解説
CakePHP4でコマンドプログラムからコンポーネントを呼び出す方法を解説。コントローラーから呼び出すときと大差はないが、use句でコンポーネントを指定する事がポイント。
-
-
CakePHP3で生の SQLの実行はConnectionManagerを使う
CakePHP3で生の SQL文を実行する方法を解説。クリエビルダーを使う場合は TableRegistryを利用するが、SQLを実行する場合は ConnectionManagerを使う。プリペアードステートメントの使用方法も解説。
-
-
CakePHP2、CakePHP3、CakePHP4、CakePHP5のバージョンを調べる 2つの方法
CakePHPのバージョンの調べ方2点を紹介。CakePHP3~CakePHP5は共通だが CakePHP2はフォルダ構成が異なるためコマンドのパスもオプションも異なる。