Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@bubbles

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

現象

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

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
0
Help us understand the problem. What is going on with this article?