如何让 Amazon s3 PHP SDK 正常工作


How to get Amazon s3 PHP SDK working?

我第一次尝试设置 s3,并尝试运行 PHP sdk 附带的示例文件,该文件创建一个存储桶并尝试将一些演示文件上传到其中。但这是我得到的错误:

The difference between the request time and the current time is too large.

我在SO上读到另一个问题,这是因为亚马逊通过比较服务器和客户端之间的时间来确定有效的请求,即两者必须在15分钟内

现在问题来了。我的笔记本电脑的时间目前12:30AM June 8, 2012。在我的服务器上,我创建了一个名为 servertime.php 并将以下代码放在该文件中:

<?php
   print strftime('%c');
?>

输出为:

Fri Jun 8 00:31:22 2012

看起来这一天是正确的,但我不知道该怎么做00:31:22.无论如何,如何始终确保客户端和服务器之间的时间在彼此的 15 分钟窗口内。如果我在中国有一个用户希望在我的网站上上传一个使用 s3 作为 cdn 的文件,该怎么办?那么时差将超过一天。如何确保所有用户的时间都在服务器时间的 15 分钟内?如果用户在美国,但其计算机上的时间配置错误,该怎么办?

基本上如何让 s3 存储桶创建和上传工作?

将您的 EC2 实例和 S3 存储桶放在同一区域中,并确保您的服务器有正确的时间:

Debian/Ubuntu

// install ntp
apt-get install ntp ntpdate

CentOS/Fedora

// install ntp
yum install ntp
// turn on service
chkconfig ntpd on
// synchronize system clock with 0.pool.ntp.org server
ntpdate pool.ntp.org
// start ntp
/etc/init.d/ntpd start

这应该可以解决您的问题。