从Laravel 5.4上传到S3存储桶时出错

时间:2018-03-10 22:04:20

标签: laravel amazon-s3 upload

[我从localhost运行脚本]

我正在尝试使用Laravel 5.4将文件上传到AWS S3存储桶但我收到此错误:

Error executing "PutObject" on "https://bucket_name.s3.amazonaws.com/1520719994357906.png"; AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

在filesystems.php中:

's3' => [
        'driver' => 's3',
        'key' => 'KRY_HERE',
        'secret' => 'SECRET_HERE',
        'region' => 'us-east-1',
        'bucket' => 'bucket_name', //has global access to read files
    ],

在控制器中:

Storage::disk('s3')->put($imageName, file_get_contents(public_path('galleries/').$imageName));

如何解决这个问题?如果我将应用程序上传到EC2实例,是否需要安装SSL才能将文件上传到S3存储桶?提前谢谢。

2 个答案:

答案 0 :(得分:0)

从服务器上传工作正常无需安装SSL,它只能从localhost无效。

答案 1 :(得分:0)

它在localhost上不起作用,如果要在localhost上使用它,则必须在供应商目录中进行一些更改。(仅在本地使用)

vendor / guzzle / src / handler / CurlFactory.php

第350行附近。注释这两行并添加新的两行,否则替换这两行。(如您所愿)

  if ($options['verify'] === false) {
                    unset($conf[\CURLOPT_CAINFO]);
                    $conf[\CURLOPT_SSL_VERIFYHOST] = 0;
                    $conf[\CURLOPT_SSL_VERIFYPEER] = false;
                } else {
               /* $conf[\CURLOPT_SSL_VERIFYHOST] = 2;
                  $conf[\CURLOPT_SSL_VERIFYPEER] = true;*/ //Comment this two line
                  $conf[\CURLOPT_SSL_VERIFYHOST] = 0;
                  $conf[\CURLOPT_SSL_VERIFYPEER] = false;
}  

现在一切正常。