【问题标题】:Laravel + AWS S3: cURL error 60Laravel + AWS S3:cURL 错误 60
【发布时间】:2017-08-10 21:27:30
【问题描述】:

我正在尝试通过 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-production 和 php.ini-development 文件中,但没有任何改变。我还做错了什么?

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

【问题讨论】:

    标签: laravel amazon-web-services amazon-s3 laravel-5 xampp


    【解决方案1】:

    您是否关注过这个问题https://stackoverflow.com/a/38667282/3429655 中的所有内容?

    还有一件事可能会有所帮助,那就是在您对 S3 的 curl 调用中添加一个参数以不验证 SSL,因为这是您的本地环境,这在您的托管开发环境中可能没问题,因为大多数托管公司都会整理他们的 SSL 证书.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
    

    【讨论】:

    • 实际上已经解决了:我愚蠢地拥有了“;”仍然在前面,没有将其识别为注释行(或某种程度的东西)。 SSL 还不是问题,但如果有,我一定会牢记在心。
    【解决方案2】:

    我遇到了同样的问题。 错误原因是您在本地或未经验证的服务器上工作。 只需要将以下行添加到“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' 行。

    就是这样。 享受您的编码!

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 2018-07-01
      • 2018-04-23
      • 1970-01-01
      • 2017-01-12
      • 2016-10-18
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      相关资源
      最近更新 更多