質問: cakephp3をローカルにcomposerでインストールし、Herokuにデプロイしたのですが、 DebugKitが読み込めずエラーでページの表示ができません。 ローカルなら問題なく表示&ロードができているため、デプロイしたHerokuの方が問題かと思います。 `src/Application.php`のDebugKitロードの記述をコメントアウトすれば、Herokuも表示できるようになります。 pluginsディレクトリはローカルもHeroku側も空です。 (cakephp3はデフォルトでDebugKitが内蔵されているはずなので) パスがおかしいのでしょうか?なぜ読み込めないのか、調べても出てこずお手上げ状態です。 何卒、よろしくお願い致します。 【エラー内容】 `Error: The application is trying to load a file from the DebugKit\Plugin plugin.` `Make sure your plugin DebugKit\Plugin is in the /app/plugins/ directory and was loaded.` 【ディレクトリ構造】 ローカルはmyappディレクトリ以下にcakephpが入っています。 myapp (Herokuだとappディレクトリ) ∟.git ∟bin ∟composer.json ∟composer.lock ∟config ∟plugins ∟src ∟tmp ∟vendor ∟webroot ∟など 追記 -- Herokuへデプロイした際に、/app/vendor/cakephp/以下のdebug_kitが消えてしまっていることがわかりました。 ローカルとHeroku上のcomposer.jsonは同じなのですが、デプロイすると一部インストールができていないようです。 (debug_kit以外にもいくつかのvendor以下のものが消えている) また、パーミッションもローカルで実行したものとは異なります。 原因がわかりましたらご回答いただけますと幸いです。
回答: 原因 お二方にご回答いただいた通り、 1cakephpのDebugKitはcomposer.jsonの"require-dev"に記載されているので、 Herokuにデプロイするときは"require-dev"は無視され、インストールされません。 そのため、Heroku側でのみDebugKitが読み込めないエラーが出ていました。 (Herokuにログインして自分でcomposerコマンドを叩くときは--no-devオプションをつけていないので、DebugKitがインストールされる。デプロイするとまた消える。) 2さらに、DebugKitはapp.phpのデバッグモードがtrueになっているときに読み込まれます。 `'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN)` 今回、これがtrueになっていたので、DebugKitを読み込んだが、Heroku側にはDebugKitが無いのでエラーになった。 解決方法 Heroku側が本番環境なので、app.phpのデバッグモードは基本的にfalseにしてOFFにしておく。 Heroku用のapp.phpを作ってHerokuではそちらを読むようにする。 (そうするとDebugKit自体を読み込まないのでエラーも出ない。) ※ただし、debugモードOFFで、cakephp3をインストールして最初に表示できるデフォルトのページを開くとエラーになります。 `Please replace src/Template/Pages/home.ctp with your own version.` cakephpのデフォページはdebugモードONでなければ表示できないようになっています。 (開発するなら使わないので特に気にしないで良いと思います) もしくは、composer.jsonのDebugKitの設定を`"cakephp/debug_kit": "^3.17.0",` "require-dev"から"require"に移動させて絶対インストールするようにしておく。 debugモードOFFなら基本読み込まれないし、DebugKitのパネルの無効化・有効化の設定ができるので、 本番でも開発環境でも別にDebugKitがインストールされていても個人的には問題ないかなと思いました。 ご回答いただいたみなさま、ありがとうございました。