php laravel을 잠깐 작업을 하다가 화면을 보니 다음과 같은 에러화면이 나오고 있었습니다.
상황
뭔가 실수로 한 줄을 지웠나?
- config/app.php 를 이전 commit과 비교를 해봤지만 이상이 없었고,
- Http/Kernel.php 도 문제가 없었습니다.
내가 뭘 했지? 수정이 반영되고 있는 것 같지 않아서 캐쉬를 지웠는데…
C:\tkim.info>php artisan optimize
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
Routes cached successfully!
Files cached successfully!
composer update
우선은 프레임웍이 망가졌나 하고 생각하고, 프레임웍을 복원하려고 애썼습니다.
composer update 를 했습니다. 해결되지 않았어요. 여러 패키지들이 갱신되었는데, 상황은 나아지지 않았습니다.
C:\tkim.info>composer update
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Package paypal/paypalhttp is abandoned, you should avoid using it. No replacement was suggested.
Generating optimized autoload files
Class Database\Factories\MenuFactory located in C:/tkim.info/database/factories\ServiceItemFactory.php does not comply with psr-4 autoloading standard. Skipping.
Class App\Repositories\MenuRepository located in C:/tkim.info/app\Repositories\ServiceItemRepository.php does not comply with psr-4 autoloading standard. Skipping.
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: barryvdh/laravel-debugbar
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: krlove/eloquent-model-generator
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: laravelcollective/html
Discovered Package: maatwebsite/excel
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: yajra/laravel-datatables-buttons
Discovered Package: yajra/laravel-datatables-editor
Discovered Package: yajra/laravel-datatables-fractal
Discovered Package: yajra/laravel-datatables-html
Discovered Package: yajra/laravel-datatables-oracle
Package manifest generated successfully.
98 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> Illuminate\Foundation\ComposerScripts::postUpdate
> @php artisan ide-helper:generate
A new helper file was written to _ide_helper.php
> @php artisan ide-helper:meta
A new meta file was written to .phpstorm.meta.php
(Package paypal/paypalhttp 이 abandoned 되었구나.. 이건 나중에 봐야겠는데?)
composer가 행하는 autloaded classes를 다시 생성해 봤습니다.
composer dump-autoload
해당명령은 composer dump-autoload
입니다.
C:\tkim.info>composer dump-autoload
Generating optimized autoload files
Class Database\Factories\MenuFactory located in C:/tkim.info/database/factories\ServiceItemFactory.php does not comply with psr-4 autoloading standard. Skipping.
Class App\Repositories\MenuRepository located in C:/tkim.info/app\Repositories\ServiceItemRepository.php does not comply with psr-4 autoloading standard. Skipping.
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: barryvdh/laravel-debugbar
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: krlove/eloquent-model-generator
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: laravelcollective/html
Discovered Package: maatwebsite/excel
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: yajra/laravel-datatables-buttons
Discovered Package: yajra/laravel-datatables-editor
Discovered Package: yajra/laravel-datatables-fractal
Discovered Package: yajra/laravel-datatables-html
Discovered Package: yajra/laravel-datatables-oracle
Package manifest generated successfully.
Generated optimized autoload files containing 6869 classes
artisan optimize
를 다시 해봤더니 class App 을 찾을 수 없다는 에러메시지가 재현됩니다.
이번에는 composer update
만 하는 것으로도 해결이 되네요.
결론
다음의 명령으로 해결을 시도할 수 있습니다.
composer dump-autoload
composer update
laravel 캐쉬는 optimize로 캐쉬를 지우는 것보다 해당 캐쉬를 선택해서 지우는 것이 좋은 것 같습니다. 예를 들면,
- 환경설정을 지울 때는
php artisan config:clear
- 루팅을 지울 때는
php artisan route:clear
- 뷰캐쉬를 지울 때는
php artisan view:clear
- 이벤트 지울 때는
php artisan event:clear
- 어플리케이션 캐쉬를 지울 때는
php artisan cache:clear
- php autoloader를 자동 생성할 때는
composer dump-autoload
- 컴포우저 캐쉬를 지울 때는 다음중 하나
composer clear-cache
,composer clearcache
,composer cc