Laravel + AWS S3:cURL 错误 60

问题描述 投票:0回答:3

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

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

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

WrappedHttpHandler.php 第 192 行中的 S3Exception:

执行“ListObjects”时出错 “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-product 和 php.ini-development 文件中,但没有任何改变。我还做错了什么吗?

(我要补充一点,我目前正在使用 Windows 10 笔记本电脑并已下载 XAMPP,尽管我仍在使用“php artisanserve”来设置本地服务器。我不确定这是否是一个问题.)

laravel amazon-web-services amazon-s3 laravel-5 xampp
3个回答
4
投票

我也有同样的问题。 错误原因是您正在本地或未经验证的服务器上工作。 只需将以下行添加到“filesystem.php”

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

您的 filesystem.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 验证的服务器上运行它时,您需要注释“scheme”行。

仅此而已。 享受你的编码吧!


2
投票

您是否遵循了这个问题中的所有内容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

0
投票

在您的

filesystem.php
中,您可以执行以下操作,而不是将“方案”设置为“http”:

'http'    => [
  'verify' => '/folder/to/cert.pem', // the pem cert path of your S3 storage server
]
// OR IF YOU DON'T WANT TO VERIFY THE CERT
'http'    => [
  'verify' => false, 
]
`

Note: I am using a in house compatible S3 storage with Isilon / Dell PowerScale
© www.soinside.com 2019 - 2024. All rights reserved.