2015-06-13 2 views
1

Я нахожусь в своей локальной среде и собираюсь включить загрузку файлов в AWS s3, используя Laravel 5.1 Flysystem/Filesystem.Laravel 5.1 AWS S3 Flysytem: ошибка AWS HTTP: ошибка cURL 6: не удалось разрешить имя хоста

Все настройки выполнены. Я создал тестовую форму, и я пытаюсь загрузить файл. Когда я нажимаю кнопку отправки, я получаю эту абсолютно, только слишком приятную ошибку:

S3Exception in WrappedHttpHandler.php line 152: 
Error executing "HeadObject" on "https://s3.Frankfurt.amazonaws.com/bucketName/resource-6"; 
AWS HTTP error: cURL error 6: Couldn't resolve host name 

Sooo ... где я пошла не так? Вот мой код:

ФОРМА/VIEW

{!! Form::open([ 
     'route'   => 'resource-store', 
     'class'   => 'uploadResource', 
     'files'   => true 
]) !!} 

{!! Form::label('Resource title') !!} 
{!! Form::text('title', null, ['placeholder'=>'Descriptive title']) !!} 

{!! Form::label('Your Resource') !!} 
{!! Form::file('resource', null) !!} 

{!! Form::submit('Create Resource') !!} 

{!! Form::close() !!} 

CONTROLLER STORE МЕТОД

public function store(ResourceRequest $request, $id) 
    { 
     /* Store entry in DB */ 
     $resource = new Resource(); 
     $resource->title = $request->title; 
     $resource->save(); 

     /* Process, Validate & Store Image */ 
     Storage::put(
      'resource-'.$resource->id, 
      $resource 
     ); 

     /* Success message */ 
     session()->flash('message', $request->title . ' er lavet/uploadet!'); 
     return redirect()->route('resource.index'); 
    } 

DATABASE CONFIG

'mysql' => [ 
      'driver' => 'mysql', 
      'host'  => env('DB_HOST', 'localhost'), 
      'database' => env('DB_DATABASE', 'forge'), 
      'username' => env('DB_USERNAME', 'forge'), 
      'password' => env('DB_PASSWORD', ''), 
      'charset' => 'utf8', 
      'collation' => 'utf8_unicode_ci', 
      'prefix' => '', 
      'strict' => false, 
      'port'  => 33060, 
     ], 

CONFIG/FILESYSTEMS.PHP

return [ 

    'default' => 's3', 
    'cloud' => 's3', 

    'disks' => [ 

     'local' => [ 
      'driver' => 'local', 
      'root' => storage_path().'/app', 
     ], 

     's3' => [ 
      'driver' => 's3', 
      'key' => env('AWS_KEY'), 
      'secret' => env('AWS_SECRET'), 
      'region' => env('AWS_REGION'), 
      'bucket' => env('AWS_BUCKET'), 
     ], 

     'rackspace' => [ 
      'driver' => 'rackspace', 
      'username' => 'your-username', 
      'key'  => 'your-key', 
      'container' => 'your-container', 
      'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/', 
      'region' => 'IAD', 
     ], 
    ], 
]; 

ответ

6

Типичный. Понял, что было неправильно после чтения this article от Пола Робинсона.

Я установил свою область s3 как Frankfurt. Хотя мой регион, конечно, Frankfurt, мне нужно было называть его eu-central-1 моим s3 region в config/filesystems.php.

После этого я мог бы исправить следующую ошибку, которая была в методе Storage::put().

НЕПРАВИЛЬНО

Storage::put(
     'resource-'.$resource->id, 
     $resource 
); 

ПРАВИЛЬНО

Storage::put(
     'resource-'.$resource->id, 
     file_get_contents($request->file('resource')) 
); 

Надеется, что это может помочь другим. Иметь потрясающий день/ночь/и т. Д.

+0

Я реализовал этот путь, но если у меня нет интернета на данный момент, это исключение отображается так же, потому что 'file_get_contents' не сможет разместить изображение на веб-сервере. –

Смежные вопросы