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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

3回答

11369閲覧

php artisan optimizeを実行した際のエラー

toll_tree

総合スコア199

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/05/15 02:10

編集2022/01/12 10:55

laravelを学習していたのですが、xdebugを使用し、vscodeにてデバッグを行っていたら、「 throw new DecryptException('The payload is invalid.');」とエラーが発生した為、こちらの記事を参考に、「App\Http\Middleware\EncryptCookies.php」内に、

php

1protected $except = [ 2 'XDEBUG_SESSION' 3];

を追加し、xamppのshellに、「php artisan optimize」を実行しました。
しかし、下記のようなエラーが発生してしまいました。

php artisan optimize
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!

LogicException : Unable to prepare route [api/user] for serialization. Uses Closure.
\htdocs\laravelapp\vendor\laravel\framework\src\Illuminate\Routing\Route.php:917
913| */
914| public function prepareForSerialization()
915| {
916| if ($this->action['uses'] instanceof Closure) {

917| throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");

918| } 919| 920| $this->compileRoute(); 921|

Exception trace:
1 Illuminate\Routing\Route::prepareForSerialization()
\htdocs\laravelapp\vendor\laravel\framework\src\Illuminate\Foundation\Console\RouteCacheCommand.php:62
2 Illuminate\Foundation\Console\RouteCacheCommand::handle()
\htdocs\laravelapp\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:32

とりあえず、エラーは発生したものの、記事内で紹介されていたコマンドをすべて打ち込み、デバッグを行ってみたのですが、「 throw new DecryptException('The payload is invalid.');」こちらのエラーは改善しませんでした。
その為、やはり上記画像のエラーが原因と考えているのですが、こちらのエラーはどのようなエラーなのでしょうか?
どなたか、ご助言頂けましたら幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答3

0

あら・・・回答直前に画像が削除された。
画像のエラーでは、こちらの話のように見えました。

仕様で、できないようなので

クロージャベースのルートはキャッシュできません。ルートキャッシングを使用するには、クロージャルートをコントローラクラスに変換する必要があります。

対応?か、わかりませんが。

あなたはルートキャッシュをクリアするためにコマンドを使用することができます:route:clear
php artisan route:clear

とすると回避できるかもしれません。

あとは、もとのエラーメッセージにもあった、-v オプションつけて実行すると、詳細のメッセージ出ると思うので、解決の糸口になるのではないでしょうか。

投稿2019/05/15 03:27

momon-ga

総合スコア4820

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

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

toll_tree

2019/05/15 03:38

ご回答ありがとうございます。 画像に絶対パスなどの情報が含まれているのは、危険だとのことでしたので、それらの情報は削除し、文字のみ張り付けさせて頂きました。 取り敢えず、教えて頂きました「php artisan route:clear」こちらのコマンドを実行し、もう一度試してみたいと思います。
guest

0

こちらのエラーはどのようなエラーなのでしょうか?

エラーメッセージの読み方と対処, 検索や質問の原則

投稿2019/05/15 02:15

m.ts10806

総合スコア80765

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

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

m.ts10806

2019/05/15 02:19

(デバッガーの画面の)エラーだけ貼られても結局フレームワークであるためこの内容だけで回答するのは不可能。 フレームワークでなくても画像のコードだけで判断できるはずがない。 どういうエラーか聞いているのだからエラーの読み方調べ方を提示するのが低評価につながるのは理解しがたい。
toll_tree

2019/05/15 02:23

>この内容だけで回答するのは不可能。 ソースコードをすべて張り付ける必要があるということでしょうか?
m.ts10806

2019/05/15 02:24

xdebugが悪いとは言わない。むしろ有用だと思う。 けど別の回答で「Laravel デバッグで調べて」とアドバイスをしていて、実際に調べたらLaravelのデバッガの紹介記事が出てくる。 「Laravel特有の問題」と思い込む質問者であればそちらを先に導入しようとすると思っていたがそうでなかったのが非常に残念。 せっかくデバッガーなりプログラムが出してくれているエラー(きちんとどこで何が起きているか、トレースまでしてくれている)をきちんと読もうとしないのはデバッガーを導入した意味が全くない。
m.ts10806

2019/05/15 02:27

>この内容だけで回答するのは不可能。 ソースコードをすべて張り付ける必要があるということでしょうか? 「エラーに基づいてどう対応すれば現象を回避できるか(解消できるか)」まで知りたければ必要。 「どういうエラーか?」という質問だけなら「エラーで調べて」としか言えません。だから「エラーを調べる際に参考になる記事」を提示しました。 結局デバッガを使いこなせていないことと、エラーをきちんと読もうとしていないことと、自身が組んだプログラムがどこにどういう影響を及ぼすか(どういう処理が行われるか、何が呼び出されてどうなるか)を把握できていないこと と問題だらけなので、 根本的なところ(というか基礎)を改善しないとおそらくずっとこのままです。
toll_tree

2019/05/15 02:40

でしたら解決する為には、今回の画像のエラーだと、なんのソースファイルが必要なのでしょうか?
m.ts10806

2019/05/15 02:47

私が提示した記事、読んだのでしょうか。 誰かに質問するときの大原則>3. エラーメッセージは原文通りに貼り付けて, 実行環境を詳しく書く より下記 「エラーを解決するのに大事な要素に "再現性" がある. エラーに再現性があるとは, あなた以外の人も同じエラーを出せる, という意味だ. どのようにすればそのエラーを再現できるのかを他の人に的確に伝えることができれば, 解決方法を探すのを手伝ってくれる. 上述の minimal repro を作っておくと, 他の人も試しやすくなる.」 > minimal repro を作っておくと, 他の人も試しやすくなる つまり「現象が再現する最小構成のプログラムコード」 特にフレームワークだとファイル単体で動いているわけではなく、様々な要素が絡み合って結果を出しているので、「これ」と特定できる要素はどこにもありません。 今質問に提示されたのは「xdebugを使ったときにデバッグでたエラーとトレースログ」のみ。 それでは誰も再現できません。 まあ私の「エラーで調べて」とか「Laravel デバッグで調べて」を丸無視のままでいくなら「そもそも問題解決を自分でできるようになる気がない」と踏んで、機械的な回答しかしなくなりますけど、それでも良ければ(要約:一生初心者でいてください。)
toll_tree

2019/05/15 02:50

いえ、今回解決したい問題は、タイトルにもある通り、php artisan optimizeを実行した際にでたエラーの解決方法であり、デバッグ中に出たエラーではないです
m.ts10806

2019/05/15 03:03 編集

私のコメントの意図(というか書いたままですけど)全く伝わってないようですけど、 では、回答を参考にエラー内容で調べてください。 エラーで調べたことが何も書いてないので。 あと > throw new DecryptException('The payload is invalid.'); これ自体は単にException投げてるだけでそれそのものがエラーではないというのはPHPわかっていたら理解できるはずですが、なぜ何度も質問本文に「~~~というエラーが」と書かれているのか理解に苦しみます。 デバッグするのであればそのExceptionが吐き出している情報を確認するべきですが、そちらに目がいっていないようです。 optimize実行時のエラーも同様。場所も何のExceptionかも、トレースログも出してくれているのですから、それを追えばよいだけでは。 デバッガ入れただけで問題が解決するわけではないです。あくまでデバッグがしやすくなるだけで、出力された情報をもとに自身で探っていく作業は必ず必要です。 回答者側から見ると丸投げの内容です。 ## それよりも画像内にコンピュータ内の絶対パスやコンピュータ名があるみたいですけど、これって出して大丈夫なものだと思いますか?プログラミング上のエラーとどちらが致命的か調べて比べてみてください。
toll_tree

2019/05/15 03:08

絶対パスや、コンピュータ名を出すとどのようなデメリットがあるのですか?
m.ts10806

2019/05/15 03:09

(2回目)どちらが致命的か調べて比べてみてください。
m.ts10806

2019/05/15 03:12

まあ全世界に発信しても何も問題ないと判断されたから出してるんでしょうけど。中には質問削除して立て直す人もいるので、そこは個人個人の判断でいいということにしておきましょう。 (ここに何も気が回らない人にセキュアなプログラミングができるとは思えませんし、私は仕事を渡そうとは思いませんが)
toll_tree

2019/05/15 03:13

どのようなデメリットがあるか分からないので、調べようがないです。 調べろというのならキーワードを教えてください。
toll_tree

2019/05/15 03:14

まだ、勉強段階なもので。仕事はしていません。
m.ts10806

2019/05/15 03:25

仕事してるかどうかの話じゃないですよ。一般的なセキュリティ意識の範囲です。 全世界に発信しているという意識があるかどうかです。 (ちなみに編集履歴から辿れるので如何様にもなりますよ) Twitterでバカバイトが動画を発信するのも「どんな人が見ているかわからない」意識の欠如からです。例えプライベート発信でも誰かが見てしまえばそこからどこに流れるか投稿者には制御できないわけです。 やってしまった子はみんな口を揃えて言いますよね。「こんな大事(おおごと)になるとは思わなかった」。 私はクラッカーの技術も知識もないから分かりませんが、個人情報に近しいものがあるだけで悪いことに使える可能性はあります。ちょっとしたことから個人特定も可能かもしれません。 まあ、あなたがどうなろうと(私に限らず)回答者、見ている人は知ったこっちゃないので、軽く忠告するだけですけど(忠告すらしないこともある)、家族や友人、仲間であれば全力で止めることもあります。 ただ、エンジニアとして見たときに、バグや不具合だけならともかく、セキュリティガバガバで他人に迷惑をかけてしまうようなアプリケーションを公開されても困るのでその点を気に掛けているだけです。 車を運転しているときに、初心者マーク外れてないからって事故を起こしていいわけではないですからね。 どんな段階であれ必ず求められる意識や基準ってあるわけです。
toll_tree

2019/05/15 03:27

編集履歴から、たどれるとのことですが、編集履歴を見直したのですが、画像は表示されていませんでした。 画像をみることはできるんですか?
m.ts10806

2019/05/15 03:36 編集

編集履歴に乗っているのはマークダウンが反映されていない「単なる文字列」だからです。 文字列ゆえに、文字列を消したからってそれにリンクした画像が物理的に削除されるような仕組みって非常に困難です。あくまでマークダウンのルールに従って変換しているだけなので、打ち間違えたかどうかの判断は(今のところは)自動的にはできないでしょう。 teratailの画像の仕組みを知っていれば誰でも確認できます。私は知っているので今現在、見れています。 つまり、「本当に見られたらまずいもの」であれば質問を削除するしかないのです。 もちろん削除前にキーとなる部分を手元に控えられてしまえば、質問を削除したところで半永久的に参照可能となります。質問とリンクしているわけでもないので(つまり仕組みさえ知っていれば他人や別の質問回答にアップした画像を表示させることも可能)。 ※既に回答がついているので運営に直接削除依頼するしかないですけど、そもそも「削除ポリシー」に該当するか微妙ですし、画像の削除依頼までうけてくれるかどうか
mikkame

2019/05/16 04:07

どこのサイトもそうだと思うんですが 画像の投稿と、質問の投稿は全く別なんですよね。 画像投稿はただのアップローダで、質問にはリンクを貼り付けているだけ。 質問内容はTEXT型で保存されているだろうから、全てのリンクが切れたら自動削除とかもできないだろうし。 そこまで考慮して設計するなら、先にquestion_idを発行して、画像投稿はquestionに紐付けてあらかじめ保存しておく他ない
m.ts10806

2019/05/16 04:12

コードもそうですけど画像も任意の数投稿できるのでそこまで管理しきれないでしょうしね。 容量の問題もあるのでもしかしたら・・バッチとかでどこにも使用されてない画像をチェックして削除とかやってるかもしれませんけど。
toll_tree

2019/05/16 04:53

取り敢えず、削除申請は出しておきました
guest

0

そもそも、

php artisan optimize

はリリース時にリソースや読み込むファイル群をキャッシュするための機能(デプロイ時の最適化コマンド)なので、デバッグ時には不要なのでは?
と思う。

というか、OpCacheあるからそのうちいらなくなるって話だったかと

参照先Qiitaにも明確な根拠はなく(攻撃的な意味ではない)、儀式的に書いてあるだけかもしれないので
optimizeコマンドの用途を考えると必ずしも実行しなくてもよさそう、と思える

投稿2019/05/16 04:14

mikkame

総合スコア5036

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問