我正在尝试通过 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”来设置本地服务器。我不确定这是否是一个问题.)
我也有同样的问题。 错误原因是您正在本地或未经验证的服务器上工作。 只需将以下行添加到“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”行。
仅此而已。 享受你的编码吧!
您是否遵循了这个问题中的所有内容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
在您的
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