エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


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行目に以下の記述があります。
 

 
この配列に求めるドメインのトップレベルドメインを追加することで対応することができます。
 
ただし、トップレベルドメインですので、「www.example.com」というドメインの場合は、「.com」がトップレベルドメインとなりますので、テスト環境だけを指定するのはなかなか難しそうです。
 
ソースコードを確認すると、ホスト名を取得し、「.」で区切った一番最後の文字列を取得して、それをトップレベルドメインとしていました。
なので「www.ドメイン.com」の場合は、「.com」がトップレベルドメインになります。
 
 

強制的に有効にする「DebugKit.forceEnable」の設定をする

 
そのため、普通は、2つ目の項目の「DebugKit.forceEnable」の設定をすることになります。
 
「DebugKit.forceEnable」を設定する具体的な対処する内容は、「/config/app.php」に下記を追加すれば OKです。
 

 
追加する場所は、「app.php」内のどこでも問題ありませんが、本番に移す際はデバッグキットを使用しないように変更する必要がありますので、ファイルの一番最後などに分かりやすく書いておく方がいいでしょう。
 


 

CakePHP3のデバッグキットを強制的に無効にする方法

 
デバッグキットを強制的に有効にする方法を紹介しましたので、ついでに、強制的に無効にする方法も紹介しておきます。
 
 
デバッグキットを強制的に無効にする場合は、設定ファイル「/config/app.php」に記述してある内容を、下記の様に変更します。
 

 
「app.php」の 12行目辺りにある設定を、「true」から「false」に変更します。
 
ただ、先に書いたとおり、一般的なドメインで運用しているサイトは、デバッグキットは無効になりますので、わざわざ強制的に無効にしなくても問題ないと言えます。
 
 

CakePHP3の関連記事

CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法
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」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
CakePHP3、CakePHP4のdatetime型カラムの日時の扱い。秒まで表示する方法

CakePHP3の日時カラムで秒まで扱う場合はdate()、strtotime()関数ではうまくいかない。CakePHP3であらかじめ用意された「i18nFormat()」を使用する。

CakePHP3のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
CakePHP3、CakePHP4のキャッシュをクリアする方法「bin/cake cache clear_all」を使う

CakePHP3、CakePHP4では処理を高速化する手法の一つとしてキャッシュを利用している。しかし、その情報は元の情報を更新しても反映されない場合がある。そんなときはキャッシュを削除する必要がある。

CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法
CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法

CakePHP3でtitleタグ、h1タグのテキストをデフォルトから変更する方法を解説。テンプレートファイルに「$this->assign()」でテキストを指定して「/Layout/defult.ctp」で受け取る。

CakePHP3で値を入力直後にバリデーションする方法解説
CakePHP3で値を入力直後にバリデーションする方法解説

CakePHP3でバリデーションの実行を保存する時から入力情報を受け取るときに変更する処理の解説。CakePHP3ではnewEntity()の処理でバリデートするため1行追加で対応可能。

CakePHP4、5のユーザ認証でID、PASS以外の削除フラグなども条件加える方法
CakePHP4、5のユーザ認証でID、PASS以外の削除フラグなども条件加える方法

CakePHP4系、5系ではAuthenticationを使用してログイン認証を行う。その認証でID、PASS以外の削除フラグなどの条件を加えたいときの対応方法について解説。

CakePHP 2.3 Search Pluginで検索処理 その1設置方法

CakePHPの検索プラグイン Search Pluginの設置方法と基本的な検索処理の解説です。

CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法
CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法

CakePHP3のブックマークチュートリアルには記載ミスもあり、そのまま動かない個所もある。CakePHP3では namespaceを使うようになったので、classを呼び出すときに¥を追加する必要が!

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法

CakePHP3でデフォルトのソート条件を設定しつつ画面上でユーザがソート条件を選択したときもソート処理を実行させる方法を解説。ソート条件はページネーションの処理として実装。

CakePHPで Auto Incrementを外すと Duplicate entry '0' for keyのエラーが出るかも
CakePHPで Auto Incrementを外すと Duplicate entry ‘0’ for keyのエラーが出るかも

CakePHPでAuto Incrementの設定を変更したときに「Duplicate entry ‘0’ for key」のエラーが出た。原因はModel内で IDを編集する処理の追加を忘れていたからだった。

CakePHP4、5のnewEmptyEntityで作成したオブジェクトは空なのか、確認してみた
CakePHP4、5のnewEmptyEntityで作成したオブジェクトは空なのか、確認してみた

CakePHPでレコードを新規登録をする際にnewEmptyEntity()を使って空のEntityを作成するが、これのempty、is_nullなどのでの判定結果がtrueかfalseか確認してみた。