Help us understand the problem. What is going on with this article?

laravel5.4で古いコントローラーが参照されてしまう現象

More than 1 year has passed since last update.

現象

SampleController.phpというファイルを参照して欲しいのに、同ディレクトリ内のSampleController_20181111.phpというバックアップのためにとっておいた古いファイルを参照してしまっていました。

ステージング環境で起きた現象なのですが、ローカル環境で変更した内容をステージング環境へ適用する前に、ステージング環境にあるSampleController.phpをバックアップとしてSampleController_20181111.phpにリネームしておき、git pullSampleController.phpを持ってきたという状況です。
するとステージング環境での動きがおかしく、どうも変更した内容が反映されていないっぽいということに気付き(これに気付くまでも時間がかかりました…)、SampleController_20181111.phpを削除してSampleController.phpのみの状態にしたのですが、SampleController_20181111.phpというファイルがありませんみたいなエラーになって、なんでそっち参照しようとするの?ってなりました。

原因

キャッシュされている…っぽい?
けどよくわからないです…

コメントしていただいたのですが、実ファイルを変更しても/vendor/composer/autoload_classmap.phpが変更されてないとダメで、その不整合をcomposer dump-autoloadで書き直してくれるということらしいです。
それが今回の原因っぽいです。

対応

とりあえずphp artisan optimizeをしたら正しいファイルを読み込んでくれました。
※コメントしていただいたのですが、php artisan optimizeはversionによって何をやっているかが全然違うみたいなので注意です。

その後ネットで調べていて、composer clear-cachecomposer dump-autoloadで解決できるらしいです。私はまだ試していないですが。
参考1:Laravel 5.4 using old controller in controllers directory
参考2:Laravel ClassLoader trying to load an old version of my model

1年以上同じ環境でやっていて今までもバックアップファイル作ったりしていたけれど、初めてのことだったので戸惑いました…。

bubbles
仕事ではweb開発をしており、現在はphp(framework:laravel5.4.36)、sqlserver、mysql、javascriptを扱っています。
ayudante
いつもユーザー中心で技術者とコンサルタントがとことん考え抜く それがアユダンテです
https://ayudante.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした