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」にしてあげてください。

これでapp.php(app_heroku.php)の設定は終了です。

②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つ共やったら確実に出るようになることは保証します。

デバッグキットを表示させたいという方はやってみてください。

ありがとうございました。