Laravel 5 на виртуальном хостинге без SSH: как сохранить загруженный файл непосредственно в папку public_html?

Моя структура такова:

/laravelfiles
/public_html
--/demo
----/index.php (and other files inside public folder)

Я изменил index.php для доступа к /laravelfiles, все работает нормально.

Моя файловая система конфигурации:

'local' => [
    'driver' => 'local',
    'root' => public_path(),
],

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

Когда я пытаюсь сохранить файл:

Storage::disk('public')->put($folder.'/'.$file_name, $file_data);

Он хранится внутри папки laravelfiles/public. Поскольку он разделен, файл недоступен.

Я хочу сохранить файл в папке /public_html/demo (в той же папке, где находится index.php).

Как я могу это сделать?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
80
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы должны привязать и изменить общедоступный путь в приложении на public_html, добавив эту строку кода в AppServiceProvider.php.

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {    
          // uncomment this after deployment to actual server
        $this->app->bind('path.public', function() {
            return base_path('public_html');
        });

    }

}

Попробуйте использовать стороннее хранилище, например Amazon S3 или Ms Azure. У них тоже есть базовые/бесплатные планы.

Ответ принят как подходящий

Попробуйте добавить в свой config/filesystems.php

'custom' => [
        'driver' => 'custom',
        'root'   => '../path/to/your/new/storage/folder',
    ],

а потом

Storage::disk('custom')->put($folder.'/'.$file_name, $file_data);

Спасибо. Пользовательский драйвер не работает, вместо этого я использовал локальный драйвер, в остальном все в порядке.

Rizki Hadiaturrasyid 30.04.2019 11:23

@RizkiHadiaturrasyid Этот код будет работать. Но на самом деле вам нужно изменить общедоступный каталог проекта. предопределенный общедоступный каталог Laravel называется public. Но на виртуальном хостинге публичным каталогом является public_html. Это решение, возможно, решило вашу проблему на данный момент, но вы столкнетесь с той же проблемой, когда произойдет что-то еще.

Salar Bahador 30.04.2019 13:39

@SalarBahador У меня все еще есть «локальная» конфигурация драйвера, и я изменил только вторую строку «драйвер» => «пользовательский» на «драйвер» -> «локальный». Итак, теперь есть три конфигурации: общедоступная, локальная и пользовательская.

Rizki Hadiaturrasyid 30.04.2019 14:07

Другие вопросы по теме