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

Posted

技术标签:

【中文标题】我无法访问公共磁盘上的文件内容【英文标题】:i cannot access to file content on public disk 【发布时间】:2021-01-18 01:58:25 【问题描述】:

在 Laravel 8 上

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

给我:

错误异常 file_get_contents(http://localhost:8000/storage/list.json): 失败 打开流:HTTP 请求失败!

但是:http://localhost:8000/storage/list.json 存在,例如可以通过浏览器访问。 在我的config/filesystem.phpiv'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',
        ],

我创建了符号链接:

php artisan storage:link

命令。

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

【问题讨论】:

【参考方案1】:

当你想处理文件时,你应该使用绝对路径。 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

【讨论】:

使它起作用的方法是在您建议的第一种情况下在“storage”之前添加“'app/public/”,好吧,他们喜欢绝对路径,但对我来说太奇怪了甚至可以通过 http 访问的东西不在本地!非常感谢'file_get_contents(storage_path('app/public/list.json'));' 如果您可以访问http://localhost:8000/storage/list.json,则表示您的应用程序不安全。这意味着人们可以访问您的存储和公共目录。不要仅仅因为在生产或本地更容易而将存储的文件夹权限设置为777。 如前所述,文件权限是在“config/filesystem.php”中设置的,但似乎 def 不起作用,也没有选择文件夹权限和结构! 您需要使用 ssh 或从命令行执行此操作。

以上是关于我无法访问公共磁盘上的文件内容的主要内容,如果未能解决你的问题,请参考以下文章

核心数据访问器 - 删除前

JAVA 读取你磁盘上任意一个文本文件,并输出内容

premiere无法打开磁盘上的文件,怎么办?

一个进程可以锁定磁盘以使其他进程无法访问它吗?

无法导入磁盘空间不足。无法将内容写入文件。文件:/opt/bitnami/apps/wordpress/htdocs/wp-content/uploads 错误

移动磁盘无法访问,要怎么恢复文件