web-dev-qa-db-ja.com

Laravelパスにファイルが見つかりませんが、存在します

ファイルの内容を取得しようとすると、コンソールで次のエラーが発生します。

[League\Flysystem\FileNotFoundException]ファイルがパスに見つかりません:C:/wamp64/www/lion/resources/generate/json/Car.json

エクスプローラーでその正確なパスをコピーして貼り付けると、jsonファイルが正常に開きます。

これが私のコードです:

$this->json = json_encode(Storage::get(resource_path('generate/json/'.$this->argument('model').'.json')));
7
kjdion84

私はそれを考え出した。

_Storage::get_は、実際にはファイルシステムのディスク構成に対する相対パスを使用しているため、エラーメッセージ自体は誤解を招くものです。

代わりにfile_get_contents()を使用して問題を修正しました。

3
kjdion84

他の人が指摘したように、Storage::getは実際にはファイルシステムのディスク構成に対する相対パスを使用しているため、デフォルトではlocalドライバーが使用されます(config/filesystems.php):

'local' => [
    'driver' => 'local',
    'root' => storage_path('app'),
],

したがって、たとえばlocalドライバを使用していて、ファイルがapp/public/yourfile.extにある場合、Storageの呼び出しは次のようになります。

Storage::get('public/yourfile.ext');
2
Gluten

これを試して

$this->json = json_encode(app_path('/resources/generate/json/Car.json');
0