Проблема с отображением изображений в файловом менеджере Laravel. Вопрос о маршрутах

#laravel #image

#laravel #изображение

Вопрос:

Я запутался с путями, чтобы заставить UniSharp / laravel-filemanager работать на сервере. В локальном режиме он работает отлично, но теперь я меняю маршруты для производства в онлайн-режиме, и мне совсем не ясно.

Проблема в том, что он загружает изображения, но они не отображаются ни на странице, ни в самом filemanager. В filemanager я вижу красный квадрат с крестом (как ошибка). Давайте посмотрим, знает ли кто-нибудь, как написать правильные маршруты. Я перепробовал много вещей, но я запутался.

Сервер загружает строительные леса:

  • server_files
  • my_laravel_app
  • public_html
    • another_files

Конфигурация filesystem.php файл в Laravel:

 'disks' => [
        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],
        'public' => [
            'driver' => 'local',
            'root' => storage_path('public_html'),
            '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'),
            'endpoint' => env('AWS_ENDPOINT'),
        ],
    ],
  'links' => [
    public_path('storage') => storage_path('app/public'),
],
 

У меня есть путь загрузки по умолчанию в filemanager lfm.php:

 'disk'  => 'public',
 

В случае, если это что-то поможет, это мой index.php распространен в public_html:

 if (file_exists(__DIR__.'/../my_app_laravel/storage/framework/maintenance.php')) {
    require __DIR__.'/../my_app_laravel/storage/framework/maintenance.php';
}
require __DIR__.'/../my_app_laravel/vendor/autoload.php';
$app = require_once __DIR__.'/../my_app_laravel/bootstrap/app.php';
 

И это ServiceProviders.php

  public function register()
    {
        $this->app->bind('path.public', function() {
            return base_path().'/public_html';
        });
    }
 

Каким должен быть правильный путь в файловой системе, чтобы filemanager мог получать доступ к изображениям и отображать их?

Примечание: папка public_html имеет символическую ссылку, как вы можете видеть на filesystem.php .

Ответ №1:

У меня есть проверка маршрутов, и я решил временно:

Я изменил:

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

И теперь я могу загружать и просматривать изображения в файловом менеджере и внутри веб-приложения. Но теперь проблема в том, что пользователи могут посещать URL-адрес изображения и видеть частный маршрут папки:

 http//mi_lar_app/storage/app/public/photos/31/art_1/fig_1.0.png
 

Какая-нибудь помощь????

Если у вас похожие проблемы, процедура, которую я выполняю в этом случае, заключалась в создании символической ссылки с маршрутами (я создал php-файл, потому что у меня нет доступа к SSH на моем сервере):

 <?php
    /*__DIR__ is the directory file, where you save this file.php */
    $mytargetDIR = __DIR__.'/../mi_lar_app/storage';
    $mylinkDIR = __DIR__.'/storage';
        symlink($mytargetDIR,$mylinkDIR);
    echo 'Todo ok/ Symlink process successfully completed';
?>
 

И, что важно, не забывайте очищать кеш и маршрутизировать все изменения. Если у вас нет доступа по SSH:

 <?php
    Artisan::call('cache:clear');
    Artisan::call('config:cache');
    Artisan::call('route:cache');
    Artisan::call('view:clear');
      return 'Todo limpio/All is cleaned';
?>
 

И далее это небольшое объяснение, какая-нибудь помощь мне?? 🙂