Laravel + AWS S3: cURL error 60



我正在尝试通过Laravel创建一个网页,该网页可以将文件(从图像开始,尽管希望在某个时候升级到.doc/.pdf)上传到AWS S3存储桶。我遵循了以下教程,以构建一个简单的页面:

http://itsolutionstuff.com/post/laravel-5-amazon-s3-file-upload-tutorial-part-1example.html

不幸的是,我目前面临以下错误:

WrappedHttpHandler 中的 S3Exception .php第 192 行:

在 上执行"列表对象"时出错 "https://s3-us-west-2.amazonaws.com/..."; AWS HTTP 错误:cURL 错误 60:SSL 证书问题:无法获取 本地颁发者证书(请参阅 http://curl.haxx.se/libcurl/c/libcurl-errors.html)

我已经从 https://curl.haxx.se/ca/cacert.pem 下载了cacert.pem文件并将其插入php.ini,但我仍然面临此错误。为了更加彻底,我也将其添加到php.ini-production和php.ini-development文件中,但没有任何变化。我还做错了什么?

(我要补充一点,我目前正在Windows 10笔记本电脑上工作并下载了XAMPP,尽管我仍在使用"php artisan serve"来设置本地服务器。我不确定这是否是一个问题。

我遇到了同样的问题。 错误原因是您正在使用本地或未经验证的服务器上。 您只需要将以下行添加到"文件系统.php

'scheme' => 'http' // to disable SSL verification on local development

您的文件系统.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'),
'scheme' => 'http' // to disable SSL verification on local development
],

当您在具有SSL验证的服务器上运行它时,您需要注释"方案"行。

仅此而已。 享受您的编码!

您是否 https://stackoverflow.com/a/38667282/3429655 遵循了这个问题中的所有内容?

还有一件事可能会有所帮助,那就是添加一个参数来不验证 S3 的 curl 调用中的 SSL,因为这是您的本地环境,这在您的托管开发环境中可能没问题,因为大多数托管公司都会整理他们的 SSL cert.pem 文件等。

将CURLOPT_SSL_VERIFYPEER设置为 false 以禁用 CA 检查。

// connect via SSL, but don't check cert
$handle=curl_init('https://s3-us-west-2.amazonaws.com/');
curl_setopt($handle, CURLOPT_VERBOSE, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
$content = curl_exec($handle);
echo $content; // show target page

最新更新