Laravel cURL ошибка 28 при загрузке файлов в корзину aws s3 - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь загрузить файлы в корзину AWS S3. Вот моя форма и контроллер

<form action="{{ url('/') }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
   <input type="file" name="image" id="image">
   <button type="submit">Save</button>
</form>
$file = $request->file('image');
$name = 'imgname.jpg';
$filePath = 'images/' . $name;
Storage::disk('s3')->put($filePath, file_get_contents($file));

Также я добавил учетные данные AWS в файл .env.

Laravel версия 6.0

При загрузке я получил следующую ошибкуфайл.

GuzzleHttp \ Exception \ ConnectException cURL error 28: (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html)

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Я исправил проблему. Проблема заключалась в том, что учетные данные AWS не читались из файла .env. Поэтому я прямо добавил в файл filesystem.php.

        's3' => [
            'driver' => 's3',
            'key' => 'KxxxxxxxN',
            'secret' => 'fSFrxxxxxxxxxx',
            'region' => 'us-east-1',
            'bucket' => 'bucket-name',
            'url' => 'http://s3.us-east-1.amazonaws.com/bucket-name',
        ],

1 голос
/ 03 октября 2019

С документы cURL

CURLE_OPERATION_TIMEDOUT (28)

Тайм-аут операции. Указанный период ожидания был достигнут в соответствии с условиями.

Так что это связано с проблемой сети, вы можете изменить параметры в config/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'),
    'curl.options' => [
        CURLOPT_CONNECTTIMEOUT => 5,
        CURLOPT_TIMEOUT => 10,
    ]
],

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

Storage::disk('s3')->getDriver()->put($filePath, file_get_contents($file), [ 'curl.options' => [CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 10]]);

Надеюсь, это поможет

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