Невозможно хранить файлы на Heroku, используя Laravel - PullRequest
0 голосов
/ 14 февраля 2019

Я развернул простое приложение Laravel (v5.7) на Heroku с этой конфигурацией:

filesystems.php:

'public' => [
    'driver' => 'local', 
    'root' => storage_path('app/public'), /* app/storage/app/public */
    'url' => env('PUBLIC_STORAGE_URL'), /* http://myApp.herokuapp.com/public/storage */ 
    'visibility' => 'public', 
],

Дерево Heroku:

app
    Procfile
    app
    database
    storage
        app
            public
    public
        storage  /* symlink to /app/storage/app/public */

Приложение отлично работает на Heroku, за исключением того, что я не могу загрузить файлы в папку общего хранилища, пока оно работает локально.

Я использую следующий код:

request()->file($userSelectedFile)->store($userFolderName);

Пример сгенерированного пути выглядитнапример:

http://myApp.herokuapp.com/public/storage/userFolderName/kwooAGW0CrChzDbUUhOdSXsoLDI99rd1enPd22ZU.png

, но файл не создается в app/storage/app/public/.

Как правильно обрабатывать загрузки пользователей в Heroku?

1 Ответ

0 голосов
/ 15 февраля 2019

Heroku предоставляет эфемерную файловую систему .Его можно использовать для временного хранения, но все сохраненное там будет потеряно при перезапуске dynos.Это происходит часто (не реже одного раза в день).

Если вам требуется длительное хранение, Heroku рекомендует использовать стороннюю службу, например Amazon S3 . Laravel изначально поддерживает этот подход :

Laravel обеспечивает мощную абстракцию файловой системы благодаря замечательному PHP-пакету Flysystem от Frank de Jonge.Интеграция Laravel Flysystem предоставляет простые в использовании драйверы для работы с локальными файловыми системами, Amazon S3 и Rackspace Cloud Storage.Более того, удивительно просто переключаться между этими вариантами хранения, поскольку API остается одинаковым для каждой системы.

Если вы хотите использовать S3, , добавьте league/flysystem-aws-s3-v3 и league/flysystem-cached-adapter дляваши зависимости , затем обновите config/filesystems.php соответственно.Там уже должен быть пример конфигурации S3.

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