Хранение Laravel 5.7: изображения ссылок дают 404 в производстве, но работают в камердинере - PullRequest
0 голосов
/ 11 ноября 2018

Я довольно новичок в Laravel и работаю над проектом, в котором я пытаюсь выяснить проблему, с которой сталкиваюсь, пытаясь сохранить только изображения в storage/app/images и его подкаталогах. Я думал, что сделал это в соответствии с документацией , и он работает, как и ожидалось, в моей локальной среде, работающей под управлением Valet. Однако, когда я продвигаю его на своем веб-сервере, запущенные изображения Nginx и php-fpm не отображаются, и если я нажимаю на ссылку, я получаю ошибку 404.

Вот раздел дисков файла systemystem.php

   'disks' => [

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

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

        'images' => [
            'driver' => 'local',
            'root' => storage_path('app/public/images'),
            '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'),
        ],

        'carousel' => [
            'driver' => 'local',
            'root' => storage_path('app/public/images/carousel'),
            'visibility' => 'public',
        ],

    ],

Вот соответствующий код в представлении:

@php
/* Grab a list of all images to dynamically display */
$files = Storage::disk('carousel')->files();
@endphp

<div class="flex-center position-ref">
    <div class="content">
        <div class="empty">
        </div>
        <div class="box-left">
            @include('partials/obit')
        </div>
                        <!-- Carousel Start  -->
        <div class="box-right">
             <div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel" data-interval="5000" data-pause="hover">
              <div class="carousel-inner">
                @for($i=0; $i < count($files); $i++ )
                    @if ($i == 0)
                    <div class="carousel-item active">
                    @else
                    <div class="carousel-item">
                    @endif  
                    <img src="{{asset('images/carousel') . '/' . $files[$i] }}">
                </div>
                @endfor
             </div>

Когда я вижу источник на странице, он показывает

<div class="carousel-item active">
<img src="http://www.example.com/images/carousel/01.jpg">
</div>
class="carousel-item">
<img src="http://www.example.com/images/carousel/03.JPG">

но щелкнув по этим ссылкам, вы получите 404. Единственный способ заставить его работать в производственной среде - это создать каталог /images/carousel/ в app/public и скопировать туда изображения, которые не идеальны, поскольку они дублируют файлы и работа.

Есть идеи, что я делаю не так?

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