Laravel 5.8 - загруженное изображение не отображается на общем хостинге, но отображается на локальном сервере - PullRequest
0 голосов
/ 22 июня 2019

Я развернул свой проект laravel на своем Shared Host и попробовал некоторые функции моего проекта, одна из которых - загрузка изображения. Изображение успешно загружено в мою папку хранения, но когда я пытаюсь просмотреть изображение, моя консоль выдает мне 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, который развернут на Shared Hosting? Спасибо за внимание.

Ответы [ 3 ]

0 голосов
/ 22 июня 2019

Ваши файлы загружаются по пути хранения, а не по общедоступному пути. У вас есть в основном два варианта: 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 лучше, если вы используете общий хостинг без консольного доступа.

0 голосов
/ 22 июня 2019

Решено путем изменения источника моего изображения в файле HTML с:

storage/site/images/

до:

storage/app/public/site/images/

Это правильный выбор? Или есть другое решение для решения этой проблемы?

0 голосов
/ 22 июня 2019

Вы хотите попробовать папку хранения ссылок.если папка / public / storage уже существует, сначала перейдите в общую папку и удалите существующую папку хранилища, затем выполните эту команду. Вы пробовали?попробуйте эту команду php artisan storage:link, если у вас нет панели команд на хостинге, пожалуйста, создайте один маршрут для запуска команды

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...