CakePHP3でデプロイした本番環境でdebug_kitを使いたい
本番環境ってエラーを解決したい時ってありますよね。
基本的にはエラーメッセージを出したらNGです。
アウトなのですが、それではエラー解決が難しいです。
CakePHP3と言えばdebug_kitです。
自分はHerokuでデプロイしましたが、その時の設定でdebug_kitをオフにしました。
そうすると「Error An Internal Error Has Occurred」(内部エラーが発生しました)とだけ表示されます。
これじゃ解決できないので、一旦オンにする設定を説明していきます。
ただすいません、自分が調べた中に古い情報もあったみたいで、とにかく手当たり次第やっています。
ご了承ください。
【自分の環境】
macOS Catalina
PHP7.4.2
CakePHP3.8
MAMP5.7
Apache2.2
MySQL5.7
①app.phpをいじる
まずapp.phpをいじります。
Herokuでやっている方はapp_heroku.phpもいじった方がいいです。
return [ 'DebugKit' => [ // 追加する行 'forceEnable' => true, // 追加する行 ], // 追加する行 /* * Debug Level: * * Production Mode: * false: No error messages, errors, or warnings shown. * * Development Mode: * true: Errors and warnings shown. */ 'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN), // trueにする
上記のような感じにします。
app.phpの一番上にreturnがあるのですが、その中に'DebugKit'という項目を入れてあげてください。
そして「'forceEnable' => true」してあげてください。
意味は「強制的にON」みたいなかんじでしょうか。
また通常の'debug'も中身を「true」にしてあげてください。
②src/Application.phpの設定
検証できていないんですが、これも恐らく必要かと思っています。
src/Application.phpを以下のように設定します。
(設定前)
//if (Configure::read('debug')) {
Configure::write('DebugKit.forceEnable', true);
$this->addPlugin('DebugKit');
//}
(設定後)
//if (Configure::read('debug')) { // コメントアウト
Configure::write('DebugKit.forceEnable', true);
$this->addPlugin('DebugKit');
//} // コメントアウト
ビフォーアフター を書きました。
ご覧のように「if (Configure::read('debug'))」をなくしています。
とにかくdebug_kitを読み込ませますっていう設定のつもりです。
これはもしかすると不必要かもしれません。
曖昧ですいません。
終わりに
以上となります。
①は絶対に必要ですが、②はちょっとわからないです。
ですが2つ共やったら確実に出るようになることは保証します。
デバッグキットを表示させたいという方はやってみてください。
ありがとうございました。