Отсутствует изображение после хостинга на 000webhost

У меня есть простой CRUD-проект с laravel. на локальном сервере все работает гладко, но после того, как я пытаюсь разместить на 000webhosting, все изображения в моем проекте не отображаются ... возможно, это связано с URL-адресом.

Вот как выглядит сайт после хостинга: результат

это мой код 1:

<link rel="icon" type="image/png" href="{{ Storage::url('public/brands/cb_indonesia.png') }}">

2:

<nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm">
    <div class="container">
        <a class="navbar-brand" href="#">
            <img src="{{ Storage::url('public/brands/cb_indonesia.png') }}" width="30" height="30" class="d-inline-block align-top" alt="" loading="lazy">
            Lestari Nusantara
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav ml-auto">
                <li class="nav-item mx-1">
                    <a href="{{ route('blog.create') }}" class="btn btn-success"><i class="fas fa-plus-square"></i></a>
                </li>
                <li class="nav-item mx-1">
                    <a href="https://github.com/rahmannurhidayat022" class="btn btn-dark"><i class="fab fa-github"></i></a>
                </li>
            </ul>
        </div>
    </div>
</nav>

3:

<div class="row">
        @foreach ($blogs ?? '' as $blog)
            <div class="col-lg-4 col-md-6 col-sm-12">
                <div class="card my-2 shadow-sm">
                    <img src="{{ Storage::url('public/blogs/').$blog->image }}" class="card-img-top" alt="{{ $blog->image }}">
                    <div class="card-body">
                        <h5 class="card-title">{{ $blog->title }}</h5>
                        {!! $blog->content !!}
                        <form class="form-inline" onsubmit="return confirm('Apakah Anda Yakin ?');" action="{{ route('blog.destroy', $blog->id) }}" method="POST">
                            <a href="{{ route('blog.edit', $blog->id) }}" class="btn my-1 btn-block btn-primary"><i class="fas fa-edit"></i></a>
                            @csrf
                            @method('DELETE')
                            <button type="submit" class="btn my-1 btn-block btn-danger"><i class="fas fa-trash"></i></button>
                        </form>
                    </div>
                </div>
            </div>
        @endforeach
    </div>

Конечно, я запустил команду [ php artisan storage:link ] ... и результаты работают нормально ... но после хостинга все изменилось


person rahman022    schedule 23.01.2021    source источник
comment
Вам нужно запустить команду php artisan storage:link.   -  person Ali Ali    schedule 24.01.2021
comment
Конечно, я выполнил команду ... и результаты работают нормально ... но после хостинга все изменилось   -  person rahman022    schedule 24.01.2021
comment
Повторно запустите команду на вашем хостинг-сервере через терминал.   -  person Ali Ali    schedule 24.01.2021
comment
но на бесплатном хостинге нет доступа к SSH :(... любое решение?   -  person rahman022    schedule 24.01.2021


Ответы (2)


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

person Senthur    schedule 24.01.2021
comment
Конечно, я выполнил команду ... и результаты работают нормально ... но после хостинга все изменилось - person rahman022; 24.01.2021

Хорошо, вы говорите, что не можете получить доступ к терминалу на вашем хостинг-плане. Вот программное решение, создайте веб-маршрут внутри route/web.php:

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

Затем перейдите по этой ссылке в веб-браузере yourdomain.com/link. Если это не сработало, попробуйте найти папку для хранения по умолчанию внутри /home/public_html и удалите ее, а затем повторите попытку.

Другое решение:

Route::get('/link', function () {        
   $target = '/home/public_html/storage/app/public';
   $shortcut = '/home/public_html/public/storage';
   symlink($target, $shortcut);
});

Внесите необходимые изменения в переменную $target и ярлык $в структуре ваших файлов.

person Ali Ali    schedule 24.01.2021
comment
я пытаюсь Route::get('/link', function () { Artisan::call('storage:link'); }); и этот результат ParseError syntax error, unexpected ')' - person rahman022; 24.01.2021
comment
Это синтаксическая ошибка, отследите ошибку, в каком файле и строке.. у вас есть дополнительный символ ')'.. найдите и удалите его. Ошибка не связана с самим приведенным выше кодом. @rahman022 - person Ali Ali; 24.01.2021