Метод 'put' в Laravel Storage for Amazon S3 использует неверный URL - PullRequest
1 голос
/ 22 мая 2019

Я занимаюсь разработкой приложения с использованием Laravel 5.7 и в настоящее время пытаюсь внедрить хранилище изображений с помощью Amazon S3. Я использую пакет league/flysystem-aws-s3-v3 со встроенным фасадом хранилища Laravel. Когда я пытаюсь загрузить изображение, команда Storage->put() генерирует неправильный URL.

Я следил за несколькими учебниками и документами в Интернете, и все они просто используют следующую команду

Storage::disk('s3')->put('{file_name}', '{file_content}')

и имя_файла автоматически имеет префикс amazon s3 url; однако для меня это не так. Но если я жестко закодировал в AWS_URL, все работает нормально. Я установил все правильные значения в файле .env (я полагаю), но Laravel, похоже, неправильно получает AWS_URL.

Я пробовал с и без кавычек вокруг значений env. Я также побежал

php artisan config:cache
php artisan cache:clear

очистить кеш переменных env.

.env

AWS_ACCESS_KEY_ID="**************"
AWS_SECRET_ACCESS_KEY="****************"
AWS_DEFAULT_REGION="us-east-1"
AWS_BUCKET="*****"
AWS_URL=http://******.s3.us-east-1.amazonaws.com

filesystems.php

'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'),
    ],

Использование php artisan tinker:

Это загружает файл правильно, но мне не нужно жестко кодировать URL.

>>> Storage::disk('s3')->put('snoflow.s3.us-east-1.amazonaws.com/Hello.txt', 'Hello World!');
=> true`

Так должна вызываться команда, но она выдает ошибку. Обратите внимание, что попытка URL - это только имя файла.

>>> Storage::disk('s3')->put('Hello.txt', 'Hello World!');
=> Aws/S3/Exception/S3Exception with message 'Error executing "PutObject" on "https://filename.txt"; AWS HTTP error: cURL error 6: Could not resolve host: filename.txt (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)'`

Буду признателен за любую помощь.

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