我无法访问 public 磁盘上的文件内容

i cannot access to file content on public disk

在 Laravel 8

file_get_contents(asset('storage/list.json');

给我:

ErrorException file_get_contents(http://localhost:8000/storage/list.json): failed to open stream: HTTP request failed!

但是:http://localhost:8000/storage/list.json 存在并且可以通过浏览器访问。 在我的 config/filesystem.php iv'e:

'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
            'permissions' => [
                        'file' => [
                            'public' => 0664,
                            'private' => 0600,
                        ],
                        'dir' => [
                            'public' => 0775,
                            'private' => 0700,
                        ],
                        ],
            ],
        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

并且我创建了符号 link 具有:

php artisan storage:link

命令。

我什至尝试按照 filesystem.php 中的描述手动将文件权限添加到存储文件夹,但没有任何改变。

当您想要使用文件时,您应该使用绝对路径。 file_get_contents() 没问题。 laravel 中有一些文件包装器可用,但在内部它们都使用 file_get_contents().

尝试

file_get_contents(public_path(asset('storage/list.json')));

如果从存储文件获取尝试

file_get_contents(storage_path('app/assets/list.json'));

https://laravel.com/docs/5.5/helpers#method-resource-path