我目前正在使用以下代码:
include 'lib/sdk.class.php';
$s3 = new AmazonS3();
$bucket = 'mybucket'.strtolower($s3->key);
$key = 'myfile.txt';
$response = $s3->if_object_exists($bucket,$key);
但是$response
当文件确实存在时不断返回错误,我缺少什么吗?
我目前正在使用以下代码:
include 'lib/sdk.class.php';
$s3 = new AmazonS3();
$bucket = 'mybucket'.strtolower($s3->key);
$key = 'myfile.txt';
$response = $s3->if_object_exists($bucket,$key);
但是$response
当文件确实存在时不断返回错误,我缺少什么吗?
在到处乱搞代码之后,我查看了我之前创建的其他站点的一些 S3 调用,并比较了这些调用是如何完成的。我注意到我以前的代码没有使用以下代码:
$bucket = 'mybucket'.strtolower($s3->key);
相反,我使用了:
$bucket = 'mybucket';
最终代码如下所示:
include 'lib/sdk.class.php';
$s3 = new AmazonS3();
$bucket = 'mybucket';
$key = 'myfile.txt';
$response = $s3->if_object_exists($bucket,$key);
这最终奏效了。但是,我不知道为什么这适用于amazon提供的示例。
如果文件确实存在并且可以访问,那么这个函数应该返回 true。我会尝试通过执行以下操作将 SDK 置于调试模式:
$s3->enable_debug_mode(true);
这会打开CURL_VERBOSE
输出,您应该能够在执行代码时查看到 S3 的实际 HTTP 请求和响应。这应该可以帮助您弄清楚可能出了什么问题。在此之后,如果您认为存在错误,您可以在 GitHub 上为 SDK 提交问题,网址为https://github.com/amazonwebservices/aws-sdk-for-php/issues。