0

我目前正在使用以下代码:

include 'lib/sdk.class.php';
$s3 = new AmazonS3();
$bucket = 'mybucket'.strtolower($s3->key);
$key = 'myfile.txt';
$response = $s3->if_object_exists($bucket,$key);

但是$response当文件确实存在时不断返回错误,我缺少什么吗?

4

2 回答 2

1

在到处乱搞代码之后,我查看了我之前创建的其他站点的一些 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提供的示例。

于 2013-04-15T16:20:04.890 回答
1

如果文件确实存在并且可以访问,那么这个函数应该返回 true。我会尝试通过执行以下操作将 SDK 置于调试模式:

$s3->enable_debug_mode(true);

这会打开CURL_VERBOSE输出,您应该能够在执行代码时查看到 S3 的实际 HTTP 请求和响应。这应该可以帮助您弄清楚可能出了什么问题。在此之后,如果您认为存在错误,您可以在 GitHub 上为 SDK 提交问题,网址为https://github.com/amazonwebservices/aws-sdk-for-php/issues

于 2013-04-12T22:21:58.917 回答