Laravel 不渲染图像
Laravel Doesn't Render Images
我已经在我的本地计算机上使用 Laravel 版本 6.0.3 设置了一个站点。
我运行这个命令:
php artisan storage:link
并已将图像文件 'black.png' 上传到我的网站。
上传正常,文件相对根目录存在于:
storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png
但是当我使用资产功能时
$image = "posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png";
assets($image);
它向图像输出以下内容link:
http://cms.test/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png
这不会给出 404 错误。而且访问时是空白页。
我可能遗漏了什么?
编辑:
如果我尝试使用:
{{ asset('storage/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png') }}
然后当我加载页面时,我在 URL:
处收到图像的 404 错误
http://cms.test/storage/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png
同样,如果我尝试:
{{ asset('storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png') }}
我也收到 URL 的 404 错误:
http://cms.test/storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png
返回初始代码后网络调试window中的响应:
$image = "posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png";
assets($image);
显示来自资产的 200 状态响应代码。
最终编辑:
按照 ceejayoz 的指示,我进行了两项重要的调整。首先在 config/filesystems.php 里面我改变了一个局部变量:
'root' => storage_path('app/public'),
在我的模板调用中我使用了:
{{ asset('storage/' . $image) }}"
现在可以使用了。
php artisan storage:link
从 public/storage
到 storage/app/public
创建一个符号 link。
这使得 storage/app/public
中的任何内容都可以在 https://example.com/storage/
上使用。它不会使 outside storage/app/public
在任何地方可用 - 因此您 storage/app/posts
中的内容仍然无法在浏览器中访问。
如果您将 post 图片放在 storage/app/public/posts
中,如果 link 设置正确,则可以通过 asset('storage/posts/foo.jpg')
访问它们。
我已经在我的本地计算机上使用 Laravel 版本 6.0.3 设置了一个站点。
我运行这个命令:
php artisan storage:link
并已将图像文件 'black.png' 上传到我的网站。
上传正常,文件相对根目录存在于:
storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png
但是当我使用资产功能时
$image = "posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png";
assets($image);
它向图像输出以下内容link:
http://cms.test/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png
这不会给出 404 错误。而且访问时是空白页。
我可能遗漏了什么?
编辑:
如果我尝试使用:
{{ asset('storage/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png') }}
然后当我加载页面时,我在 URL:
处收到图像的 404 错误 http://cms.test/storage/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png
同样,如果我尝试:
{{ asset('storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png') }}
我也收到 URL 的 404 错误: http://cms.test/storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png
返回初始代码后网络调试window中的响应:
$image = "posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png";
assets($image);
显示来自资产的 200 状态响应代码。
最终编辑:
按照 ceejayoz 的指示,我进行了两项重要的调整。首先在 config/filesystems.php 里面我改变了一个局部变量:
'root' => storage_path('app/public'),
在我的模板调用中我使用了:
{{ asset('storage/' . $image) }}"
现在可以使用了。
php artisan storage:link
从 public/storage
到 storage/app/public
创建一个符号 link。
这使得 storage/app/public
中的任何内容都可以在 https://example.com/storage/
上使用。它不会使 outside storage/app/public
在任何地方可用 - 因此您 storage/app/posts
中的内容仍然无法在浏览器中访问。
如果您将 post 图片放在 storage/app/public/posts
中,如果 link 设置正确,则可以通过 asset('storage/posts/foo.jpg')
访问它们。