使用Amazon S3 PHP sdk时设置证书验证位置错误


Error setting certificate verify locations when using Amazon S3 PHP sdk

下面是实现Amazon S3删除对象的代码

    require_once(APPPATH . 'libraries/aws.phar');
    $s3 = S3Client::factory(array(
                'key' => S3_KEY,
                'secret' => S3_SECRET
    ));
    $s3->deleteMatchingObjects(S3_BUCKET, "abc.mp4");

错误信息是:

Fatal error: Uncaught exception 'Guzzle'Http'Exception'CurlException' with message '[curl] 77: error setting certificate verify locations: CAfile: /tmp/guzzle-cacert.pem CApath: none [url] https://testdomain.s3.amazonaws.com?prefix=abc.mp4' in phar:///home/in001/public_html/yoga/application/libraries/aws.phar/Guzzle/Http/Curl/CurlMulti.php:359 Stack trace: #0 phar:///home/in001/public_html/yoga/application/libraries/aws.phar/Guzzle/Http/Curl/CurlMulti.php(292): Guzzle'Http'Curl'CurlMulti->isCurlException(Object(Guzzle'Http'Message'Request), Object(Guzzle'Http'Curl'CurlHandle), Array) #1 phar:///home/in001/public_html/yoga/application/libraries/aws.phar/Guzzle/Http/Curl/CurlMulti.php(257): Guzzle'Http'Curl'CurlMulti->processResponse(Object(Guzzle'Http'Message'Request), Object(Guzzle'Http'Curl'CurlHandle), Array) #2 phar:///home/in001/public_html/yoga/application/libraries/aws.phar/Guzzle/Http/Curl/CurlMulti.php(240): Guzzle'Http'Curl'CurlMulti->processMessages() #3 phar:///home/in001/public_html/yo in phar:///home/in001/public_html/yoga/application/libraries/aws.phar/Aws/Common/Client/AbstractClient.php on line 258

我在这里遵循了这个例子:

删除Amazon S3中的对象或桶?

和记录的所有参数是正确的,任何想法如何修复它?

谢谢你的帮助

不要使用.phar,而是下载zip文件

https://github.com/aws/aws-sdk-php/releases

和要求如下:

require_once(APPPATH . 'libraries/aws/aws-autoloader.php');

修复问题