[我从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存储桶?提前谢谢。
答案 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;
}
现在一切正常。