ローカルサーバーにてLaravel開発をしていて、本番環境にいざデプロイ!
(このデプロイって言葉、いまだになれない。アップロード、アップとかそんな言い方もう古いの?)
今回sshも使えないコマンドも使えない、ログはどこで見るのかさっぱりわからないようなレンタルサーバーへのデプロイとなったわけで、それなりに苦労しましたが、ネット上の先輩方のおかげでなんとか無事上がったかな?といったところで、とある1コンテンツだけがずっと500エラーで何やってもだめ。
キャッシュ消したり、ファイルが破損してるのか?と何度もデプロったり(言いたがり)してみたけどだめ。
Laravelのログ/storage/logs/laravel.logを見てみると、
production.ERROR: Target class [App\Http\Controllers\Admin\movieController] does not exist.
なんてエラーが。
ローカル環境では動いているわけで、どうしてサーバーにあげたとたんにだめになるのか。
結局、この「サーバーに上げたとたん」、というところがミソだったんですけど。。。
わたしにはわからずとてーーーもハマってしまいました。
単純に大文字・小文字の間違いだった
ほんと、こういったケアレスミスでハマることが非常に多いのをなんとかしたい。
ルーティングで指定しているコントローラー名を本当なら「MovieController」とするべきところを「movieController」としてしまっていたためにエラーとなってました。
windowsとかmacの場合、大文字小文字を区別しないからエラーにならないけど、Linuxの場合は区別するため、本番環境に上げたとたんに、そんなclassはないぜ!と言われるわけですね。
あぁ無情。
いっかい検索しよ!これからそうしよ!
いつも心に誓うこと。
エラーが出たら一回、全プロジェクトファイルから検索してみよ。
その該当のソース、もう一度よく見てみよ。
今回だって、無いよ?って言われてる「movieController」を検索しておけば、ルーティング設定が間違ってるだけってすぐわかったはず!(ほんとかな?)
今度同じエラーが出たら使うチェック項目
- まず、無いって言われてるclass名で検索してみて?何かわかるかもよ
- コントローラー名の大文字小文字あってる?
- おんなじコンテンツ群がエラーってことは完全におんなじコントローラーが原因よ?そのあたり見て?
- ちゃんとコミットとかプッシュとかアップロード(笑)とかできてる?
sshも使えない、コマンドも打てないサーバーにLaravelで作ったものをデプロイする方法を忘れないうちにと思って、今回のエラーについては超適当にメモっておきます。
コメントを残す