【发布时间】:2020-10-24 18:19:20
【问题描述】:
我正在开发 Laravel 7(在 Windows 10 上使用 Laragon 4.0),我从远程 URL 下载并保存了一些文件。一切正常,但我必须执行“php artisan config:clear”来更新 mysql 配置,之后保存在 storage/public 文件夹中的图像不再提供。
文件在那里但只是没有提供,然后我删除了 /storage/public 文件夹中的所有内容,删除了 /public 文件夹中的符号链接到 /storage (自然执行“php artisan storage:link”)并再次填充 /storage/像我以前一样公开文件夹和文件。文件夹结构在那里,文件也在那里,但是当我尝试访问它们时出现 404 错误。
我尝试了“php artisan optimize:clear”和我在stackoverflow上找到的每一个建议,但似乎没有任何帮助,我不知道去哪里找,请帮助我。
这是我用来下载/保存图片的代码:
$url = $team["logo"];
$contents = file_get_contents($url);
$name = substr($url, strrpos($url, '/') + 1);
$file = 'public/team/logo/'. $name;
Storage::put('team/logo/'. $name, $contents);
这就是我在视图上显示图像的方式:
<img src="{{Storage::url($team->logo)}}" style="max-width:50px">
这是我在 filesystems.php 上的公共磁盘配置
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
【问题讨论】:
-
假设您创建了符号链接并将“本地”磁盘设置为默认值,我看不出问题出在哪里。也许将
$file = 'public/team/logo/'. $name;更改为$file = 'team/logo/'. $name;但在config:clean 之前它不应该工作。您必须更改了配置文件中的某些内容,从而破坏了您之前的代码。 -
感谢@DimitriMostrey 我被困在其中,以至于我没有想到正确的相对路径。我刚刚意识到这是一个路径问题,我将公用文件夹放在 url 中,这就是问题所在。顺便说一句,我不明白为什么在它工作之前。
-
您可能更改了
config/filesystem.php的设置中的某些内容。在本地环境中,不缓存任何内容是一个好习惯。正如您在此处所注意到的,您不断地更改您的代码,任何缓存都可能而且应该让您感到困惑。
标签: laravel file http-status-code-404 storage laravel-7