Laravel中的AWL SSL错误:无法获取本地颁发者证书

时间:2017-03-17 10:56:20

标签: php laravel amazon-web-services ssl amazon-s3

我目前正在我的laravel设置上设置amazon s3(第一次使用AWS做任何事情),而且我遇到了一些麻烦。作为参考,我使用的是XAMPP v.3.2.2和PHP 7.0.5。也许有人可以告诉我哪里出错了。

首先,我将这些添加到我的composer.json文件中:

"require": {
    "graham-campbell/flysystem": "^3.0",
    "league/flysystem-aws-s3-v3": "^1.0"
},

并运行了作曲家更新。

接下来,我将其添加到我的filesystems.php文件中:

's3' => [
    'driver' => 's3',
    'key'    => 'A--------edited out for stackoverflow-------WA',
    'secret' => 'h-------------edited out for stackoverflow-------------B',
    'region' => 'us-east-1',
    'bucket' => 'commendmeus',
],

最后我尝试做一个测试以确保一切正常。在我的路线文件中,我添加了:

use Illuminate\Support\Facades\Storage;
get('test', function () {
        echo 123;
        $s3 = Storage::disk('s3');
        $s3->put('myfile.txt', 'test file', 'public');
});

不幸的是,我遇到了一个错误:

  

WrappedHttpHandler.php中的S3Exception第192行:执行错误   “ListObjects”上   “https://s3.amazonaws.com/commendmeus?prefix=myfile.txt%2F&max-keys=1&encoding-type=url”;   AWS HTTP错误:cURL错误60:SSL证书问题:无法获取   本地发行人证书(见   http://curl.haxx.se/libcurl/c/libcurl-errors.html

以下是参考屏幕截图:

enter image description here

我对SSL一无所知,虽然我在stackoverflow上看到类似于我的错误,但它可能就像是在给我读中文。任何人都可以帮助我解决正确的行动方案吗?

2 个答案:

答案 0 :(得分:1)

此问题通常是由PHP设置中缺少cacert.pem引起的。

1)从https://curl.haxx.se/ca/cacert.pem

下载cacert.pem

2)将cacert.pem复制到PHP目录(或任何位置)。

3)修改你的php.ini以包含与这些类似的行。注意:对于您的系统,路径必须是绝对的和正确的(例如,Windows使用C:\ path \ cacert.pem):

curl.cainfo = /路径/ cacert.pem

openssl.cafile = /路径/ cacert.pem

答案 1 :(得分:0)

请避免使用localhost,尝试使用主机名命名您的本地域名,并获取证书(ssl),并且应该可以正常工作:

实施例: https://local.dev