質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

3回答

2252閲覧

【Heroku・cakephp3】DebugKitが読み込めない・デプロイするとcomposer.jsonに記載されたものが消える

smnsmn

総合スコア175

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2018/12/26 14:35

編集2018/12/27 05:43

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以下のものが消えている)
また、パーミッションもローカルで実行したものとは異なります。

原因がわかりましたらご回答いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Herokuはデプロイ時のコマンドで --no-dev オプションをつけます。
この場合はcomposer.jsonのrequire-devに書かれているパッケージをインストールしません。
https://devcenter.heroku.com/articles/php-support#build-behavior

投稿2018/12/27 08:30

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

smnsmn

2018/12/27 10:02

ご回答ありがとうございました。 ご教授いただいた通り、 debug_kitがrequire-devに記載されていたため、デプロイ時にHeroku側でインストールされていないのが原因でした。 解決策を自己解決の部分に記載します。 本当にありがとうございましたm(_ _)m
guest

0

CakePHP 標準のプラグインについては、vendor/cakephp-plugins.php に記載されているパスにありますから、通常は vender/cakephp/debug_kit/ 以下にあるはずですが、こちらは確認されましたか?

投稿2018/12/26 23:56

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

smnsmn

2018/12/27 05:38

ご回答ありがとうございます。 >>通常は vender/cakephp/debug_kit/ 以下にあるはず 確認したところ、ローカルにはありましたが、Heroku側にはありませんでした。 Heroku側でcomposer installを実行するとインストールできたのですがエラーが解消されず、 cakephpのvendorやtmpのパーミッションが700だったので変更しましたがやはりダメでした。 また、ローカルからデプロイするとインストールしたdebug_kit(他いくつかのvendor以下のもの)が消えてしまいます。 ローカルとHeroku側のcomposer.jsonは同じなのですが、なぜこのようになってしまうのでしょうか・・・ 引き続き、調べてみたいと思います。 ご回答頂きありがとうございました。
tacsheaven

2018/12/27 07:26

Heroku 側で composer install をした後で、vender/cakephp-plugins.php の内容は、正しい debug_kit への向き先になっていましたでしょうか? ファイルがあることと、そのファイルを読み込むこととは同値ではありませんよ。
smnsmn

2018/12/27 09:59

ご回答ありがとうございます。 debug_kitへの向きはあっておりました。が、今回は別の問題でした。 ですが、debug_kitがあるかどうかや、cakephp-plugins.phpに記載されていることを知らなければ解決できませんでした。勉強になりました。 お力添えいただきありがとうございました。m(_ _)m
guest

0

##原因
お二方にご回答いただいた通り、

①cakephpのDebugKitはcomposer.jsonの"require-dev"に記載されているので、
Herokuにデプロイするときは"require-dev"は無視され、インストールされません。
そのため、Heroku側でのみDebugKitが読み込めないエラーが出ていました。
(Herokuにログインして自分でcomposerコマンドを叩くときは--no-devオプションをつけていないので、DebugKitがインストールされる。デプロイするとまた消える。)

②さらに、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がインストールされていても個人的には問題ないかなと思いました。

ご回答いただいたみなさま、ありがとうございました。

投稿2018/12/27 10:22

smnsmn

総合スコア175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問