RequestTimeTooSkewed使用PHP S3类时出错

时间:2011-10-13 03:29:38

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

这是我的第一个PHP项目,所以我根本不了解PHP。

我要做的是使用PHP S3类将文件上传到S3存储桶。一段代码示例昨天正在运行,但是当我今天再次开始使用它时,几乎完全相同的代码停止工作。

现在我只是得到了putObject函数返回的以下错误:

Warning: S3::putObject(): RequestTimeTooSkewed The difference between the request time and the current time is too large. in /vagrant/LifeInYourWay/S3.php on line 222

我读了一些地方,说服务器时间可能导致错误,所以我将服务器时间改为America / New_York,但仍然得到同样的东西。

我拥有的PHP代码是:

if(!class_exists('S3')) require_once('S3.php');

// AWS access
if(!defined('awsAccessKey')) define('awsAccessKey', '******');
if(!defined('awsSecretKey')) define('awsSecretKey', '******');

$s3 = new S3(awsAccessKey, awsSecretKey);

$imageName = $_FILES['imageFile']['name'];
$imageTempName = $_FILES['imageFile']['tmp_name'];
$imageLink = $_POST['imageLink'];

if(!strlen($imageLink) || $imageLink == 'http://'){
    //create a new bucket
    $s3->putBucket("widget-images", S3::ACL_PUBLIC_READ);

    //move the file
    $put = $s3->putObject($s3->inputFile($imageTempName), "widget-images", $imageName, S3::ACL_PUBLIC_READ);
    if($put){
        var_dump($put);
        $imageUploaded = true;
    }else{
        $imageUploaded = false;
    }
    echo($imageUploaded);
}else $image = $imageLink;

1 个答案:

答案 0 :(得分:16)

您计算机的时钟或时区设置不正确。因为S3使用当前时间来验证请求,如果您的时钟关闭时间超过15分钟,或者您的时区不正确(从而导致时间偏差),您的请求将会失败。