HomesteadでPHP(Laravel)アプリケーションが動作しなくなった時の対処法

3日程度はまった。
環境構築用のスクリプトが整備できたので良しとしよう。




環境



Mac OS Mojave
Laravel 5.7.x
Vagrant 7.x

Vagrantが怪しい。


Fatal error: Uncaught Runtimeexception: a facade root has not been set.



あるタイミングでエラーが発生して一切動作しなくなってしまう。
この状態になるとartisanなども実行できなくなる。



対応方法




結論から述べるとVagrant(仮想環境)を作り直すといいようだ。
仮想環境を一度削除する。
共有ディレクトリを設定しておいてソースはあらかじめ配置しておく。

vagrant destroy -f && vagrant up

以上で環境は再構築されるはず。
わかってしまえばなんということはない。
完全に作り直すのでテストデータなどを簡単にインポートできるような仕組みがいる。

以下いろいろやったときの備忘


最新はレポジトリにアップロード済なので持って来れば動くだろう
→ ×
.gitignoreファイルから影響がありそうなファイルを探す
→ ×

新しくプロジェクトを作り直してみる
composer create-project "laravel/laravel=5.7.*" code --prefer-dist
フォルダを共有していないときは作成できるが共有していると途中でエラーが発生してvender以下が根こそぎ消えてしまう。

[RuntimeException]
Could not scan for classes inside "/home/vagrant/code/vendor/sebastian/object-enumerator/src/" which does not appear to be a file nor a folder

共有がうまくいっていない気がする。
一旦ファイルをホストと仮想マシンで同じにした後共有設定を追加して
vagrant up --provision

Fatal error: Uncaught RuntimeException: A facade root has not been set. in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 234
( ! ) RuntimeException: A facade root has not been set. in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 234

上記エラーが出てうまく動かない。

Unable to load the "app" configuration file
設定ファイルが読み込めていない?


Laravelのキャッシュを削除する

artisanが使えないので手動で削除する。

https://qiita.com/ryokurosu/items/1d5084215b9050bd91c6

/laravel/bootstrap/cache/
/laravel/storage/framework/cache/
以下のファイルを削除する。効果なし


もう諦めてリモートデバッグする方針にしてみる。
→ 何故かうまくいかなかった
ローカルに環境を作成する
→ 避けたい
テストやログでデバッグする
→ 後々を考えると避けたい

OSを更新したり環境のバージョンを変えてみたりいろいろ試してみたりする。
そうこうしているうちに
- 仮想環境を作り直してcreate-projectすると動作する。
- 途中で共有フォルダを変更するとおかしくなる
ということに気づく。作り直してやっとうまくいった。


環境を作り直した後以下のエラーが発生していた。

Class 'Illuminate\Notifications\NexmoChannelServiceProvider' not found

composer install
で改善する。

vagrant@homestead:~/code$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.

ファイルはなにも変わっていない気がするが動作するようになった。


ただしそこそこ頻繁に壊れてしまう。
今まではそんなことはなかったので新しいバージョンがまずいのかもしれない。



2019年6月7日金曜日