Laravel 5.8-上传的图像未显示在共享主机上,但显示在本地服务器上

时间:2019-06-22 15:54:48

标签: php laravel

我已经在共享主机上部署了laravel项目,并尝试了一些项目功能,其中之一是上传图像。该图像已成功上传到我的存储文件夹中,但是当我尝试查看该图像时,控制台会在该上传的图像URL上为我提供404,例如URL:

http://member.gunabraham.com/storage/site/images/Site_Logo_1561217248.png

但是在我的本地服务器上,上传的图像正确显示在此URL上:

http://localhost:8000/storage/site/images/Site_Logo_1561217645.png

这是我的config/filesystems.php

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
    ],

],

还有我的HTML文件:

<a href="{{url('/home')}}" class="brand-logo amber-text center"><img src="{{asset('storage/site/images/'.$siteinfo->site_logo)}}" alt="" width="70" style="margin-top:15px;margin-bottom:15px;">

那么我该如何在共享主机上部署的laravel项目上做什么?感谢您的关注。

3 个答案:

答案 0 :(得分:0)

您想尝试链接存储文件夹。 如果/ public / storage文件夹已经存在,请首先转到public文件夹并删除现有的存储文件夹,然后运行此命令 你尝试过吗? 试试这个命令php artisan storage:link 如果您在主机托管中没有命令面板,请创建一条运行命令的路线

Route::get('/command',function(){ Artisan::call('storage:link'); });

答案 1 :(得分:0)

您的文件正在存储路径而不是公共路径中上载。这里主要有两个选择:  1.将文件系统更改为公用路径。

 In your /config/filesystems.php
  'public' => [
  'driver' => 'local',
  'root' => public_path('app/public/'),
  'url' => env('APP_URL').'/storage',
  'visibility' => 'public',
],
  1. 创建符号链接,然后通过公用文件夹指向存储文件。为此,您可以在服务器控制台中运行 php artisan storage:link 。如果您没有控制台访问服务器,则可以使用cron作业来完成此操作。

如果您使用没有控制台访问权限的共享主机,则选项1更好。

答案 2 :(得分:0)

通过从以下位置更改HTML文件中的图像源来解决:

storage/site/images/

至:

storage/app/public/site/images/

这是正确的选择吗?还是有解决此问题的另一种方法?