Laravel Error Class “App\libs\XXXXX” not found

現象

Laravel で名前空間の指定が正しくWindowsでは正常に動作し、Linuxで Class Not Found が出て原因不明の現象におちいった

autoload_classmap.php

オートロードするファイルの配列が作られているファイルを一旦調査する。キーがnamespaceで値がパスになっている。

vendor/composer/autoload_classmap.php

配列が存在しないなら以下のコマンドを実行する

% composer dump-autoload

dump-autoload

クラス名の変更や新規追加など、名前空間を新たに作成した時は以下のコマンドを実行し、autoload_classmap.phpを更新する。

% composer dump-autoload

composer.json

オートロードはcomposer.jsonに記述されています

独自にapp\Logic\Sampleなど各機能毎にフォルダ分けしてクラスを分けたい場合、app\tests\TestCase.php追加する場合、 composer.json ファイル内にある classmap の配列の箇所に作成したフォルダのパスを追記し、composer dump-autoloadで取り込む。

    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories",
            "Logic/Sample",
            "tests/TestCase.php"
        ]
    },

基本クラスのエイリアス

config/app.php に記述されているAliasは、短く記述できるので config/app.php 参照してみる

例:use App;

    'aliases' => [

        'App' => Illuminate\Support\Facades\App::class,
        'Arr' => Illuminate\Support\Arr::class,
        'Artisan' => Illuminate\Support\Facades\Artisan::class,
        'Auth' => Illuminate\Support\Facades\Auth::class,
        'Blade' => Illuminate\Support\Facades\Blade::class,
        'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
        'Bus' => Illuminate\Support\Facades\Bus::class,

composer.json

参考

Laravelで名前空間を指定してオートロードされなかったら見る場所