Laravel 5.1 AWS S3 Flysytem:AWS HTTP错误:cURL错误6:无法解析主机名

Mar*_*nJH 2 curl host file-upload amazon-s3 laravel-5

我在我的本地环境中,即将使用Laravel 5.1 Flysystem/Filesystem将文件上传到AWS s3.

所有设置都已完成.我创建了一个测试表单,我正在尝试上传文件.当我按下提交按钮时,我绝对得到了这个,只有太可爱的错误:

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
Run Code Online (Sandbox Code Playgroud)

Sooo ......我哪里出错了?这是我的代码:

表格/视图

{!! 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() !!}
Run Code Online (Sandbox Code Playgroud)

控制器存储方法

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');
    }
Run Code Online (Sandbox Code Playgroud)

数据库配置

'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,
        ],
Run Code Online (Sandbox Code Playgroud)

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',
        ],
    ],
];
Run Code Online (Sandbox Code Playgroud)

Mar*_*nJH 7

典型.阅读Paul Robinson的这篇文章后意识到出了什么问题.

我把我的s3区域设置为Frankfurt.虽然我区果然是Frankfurt,我需要把它称为eu-central-1我的S3区域config/filesystems.php.

之后,我可以继续修复Storage::put()方法中的下一个错误.

错误

 Storage::put(
        'resource-'.$resource->id,
         $resource
 );
Run Code Online (Sandbox Code Playgroud)

正确

Storage::put(
        'resource-'.$resource->id,
        file_get_contents($request->file('resource'))
);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助别人.有一个很棒的一天/晚/等.