Php 如何修复:请求时间和当前时间之间的差异太大

Php 如何修复:请求时间和当前时间之间的差异太大,php,laravel,amazon-web-services,amazon-s3,timezone,Php,Laravel,Amazon Web Services,Amazon S3,Timezone,我从AWS收到此错误: App\Services\Exceptions\Exception引发异常,并显示消息“中出错” 更新系统中的facebook事件在上执行“PutObject”时出错 “n.jpg”;AWS HTTP错误:客户端错误:PUT n.jpg导致403错误 禁止回应: RequestTimeTooSkewed请求之间的差异(截断…) RequestTimeTooSkewed(客户端):请求时间和当前时间之间的差异太大。- RequestTimeTooSkewed请求时间和当前时

我从AWS收到此错误:

App\Services\Exceptions\Exception引发异常,并显示消息“中出错” 更新系统中的facebook事件在上执行“PutObject”时出错 “n.jpg”;AWS HTTP错误:客户端错误:PUT n.jpg导致403错误 禁止回应: RequestTimeTooSkewed请求之间的差异(截断…) RequestTimeTooSkewed(客户端):请求时间和当前时间之间的差异太大。- RequestTimeTooSkewed请求时间和当前时间之间的差异太大 大号20180403T075710Z2018-04-03T06:57:48Z900000“

它说请求时间是:
7:57 am
,服务器时间是:
6:57 am

但是,我的本地机器时间是:
9:57 am
(不使用vagrant或任何服务器)

我的AWS在俄亥俄州,时间是:
凌晨2:57

我要更改什么来修复此错误


我正在构建一个
php/Laravel 5.5
项目。

您需要更新AWS服务器和本地机器上的时间。最好的方法是运行
ntpdate
命令来同步时间

命令:

sudo ntpdate -u in.pool.ntp.org
它说请求时间是:上午7:57,服务器时间是:上午6:57

服务器时间指AWS服务器上的时间(S3)

我的AWS在俄亥俄州,时间是:凌晨2:57

这没关系。AWS在协调世界时(UTC)上运行。各个地区的服务器都不知道时间和地点

请求时间表示编码到请求中的时间戳,在代码运行的任何地方生成——在本例中可能是您的台式机/笔记本电脑。它是以UTC编码的

但是,我的本地机器时间是:上午9:57(不使用vagrant或任何服务器)

一般来说,计算机——操作系统——有两个相互作用的概念来回答“现在几点了?”--

  • 现在几点了?及
  • 向用户显示时间时应使用什么偏移量?偏移量是时区设置
这两个都必须是正确的。。。否则,您的时钟可以同时:

  • 被设置到错误的时间和地点
  • 显示正确的时间

您的计算机认为其时钟已设置为显示UTC+2时区的正确本地时间。。。因此,在签署请求时,从显示的“本地”时间中减去2小时(显示9:57,请求时间7:57)。。。但是,如果上午9:57是您的本地时间,那么您的计算机上的时区设置是不正确的,因为您实际使用的是UTC+3,因为“服务器”(位于亚马逊)的时间显示为6:57。更正时区设置,然后将时钟调整一小时(如有必要)应该可以解决问题。

对于我来说,我在系统上打开了日光节约功能,然后重试,它成功了。我关掉了日间节电,因为这会使这里的时间晚一个小时


根据你们在地球上的位置,对我有效的方法是将我的系统时间减少1小时。

我如何为我解决这个问题:

  • 在运行docker守护程序/docker的主机上。安装ntp

    yum -y install ntp
    
  • 添加NTP服务器

    ntpdate -u in.pool.ntp.org
    

  • 当主机系统时间正确时(与NTP服务器同步后),容器将自动更正时间。

    这肯定只是一个时区修复?您可以在config/app.php文件中调整时区。它设置为我的本地时间,与我的本地计算机相同。不过我会再检查一遍。通常,在app.php中更改时区也会将正确的时间保存到数据库中。仔细检查你没有打字错误或任何事情。