#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';
?>
И далее это небольшое объяснение, какая-нибудь помощь мне??