如何显示Laravel中其他磁盘的图像

问题描述

我正在尝试在Laravel应用程序中显示图像。该映像来自另一个磁盘,该磁盘是samba共享。我按照Laravel文档中的配置说明进行操作,这是我的设置:

filesystems.PHP

'shop_storage' => [
    'driver' => 'local','root' => env('SHOP_STORAGE_PATH',base_path('shop_storage')),'dir' => [
        'public' => 0777,'private' => 0777,]
],

我的samba共享通过以下命令安装到Laravel应用程序中的根文件夹/ shop_storage中: sudo mount.cifs //PATH_TO_FILE_SHARE/ARMMAG ./shop_storage -o credentials=$HOME/.smbcredentials,rw,file_mode=0777,dir_mode=0777,mfsymlinks

打开文件夹后,我可以正确看到所有文件。 然后,我使用以下命令从/public/storage/shop_storage添加了符号链接sudo ln -s /shop_storage /public/storage(使用从/ home开始的完整路径,出于隐私考虑,此处已删除) 当我打开/public/storage时,我可以正确看到指向samba共享的符号链接。如果单击以打开它,我会看到所有文件。我要查找的文件存在。

directory structure

问题是当我尝试在网页中显示它时,请求返回404。 这是我尝试过的一些东西:

<img src="{{\Storage::disk('shop_storage')->url('products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">
<img src="http://localhost:8000/shop_storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png">
<img src="{{asset('products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">
<img src="{{asset('storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">

我在做什么错了?

修改 经过几次尝试/错误后,我设法使用以下语法获得了不同的响应: <img src="{{asset('storage/shop_storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}"> 现在,我遇到了以下错误

You don't have permission to access /storage/shop_storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png on this server.

我的权限设置为777,这可能是什么原因造成的?

解决方法

我最终要做的是将我的共享直接装载到公共/存储中,而不是使用符号链接。然后,我可以使用laravel资产帮助程序访问该文件:

<img src="{{asset('storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">