hyperf/easyswoole/swoole等基于swoole的框架集成阿里云STS服务端SDK导致整个项目时间不对的坑

因项目需要从要集成阿里云STS的服务端SDK,从阿里云官网下载地址为:

https://gosspublic.alicdn.com/doc31920servercode/sts-server.zip?spm=a2c4g.11186623.0.0.65f73af0MiW74k&file=sts-server.zip

解压后服务代码中有下面两行代码:

sts-server/aliyun-php-sdk-core/RpcAcsRequest.php中的45行:

date_default_timezone_set("GMT");

和sts-server/aliyun-php-sdk-core/RoaAcsRequest.php中的82行:

date_default_timezone_set("GMT");

如果在hyperf等类似基于swoole的框架中调用了STS的服务端SDK,会把整个项目的时间设置为GMT的,比如在hyperf框架下的bin/hyperf.php中,有这么一行代码:

date_default_timezone_set('Asia/Shanghai');

阿里云STS中的这两行设置时区的会覆盖bin/hyperf.php中设置时区的,导致整个项目中的时间不对,间隔导致了往数据库中表created_at这类的时间也不对,所以一是阿里云服务端STS的SDK太坑爹;二是在hyperf这类框架中有新集成第三方SDK时一定要手动搜索下有无设置时区的,如类似的date_default_timezone_set,一定要检查仔细了。

最后修复的方法为(以服务器时间为东八区为例):
//date_default_timezone_set('GMT');

$apiParams["Timestamp"] = date($this->dateTimeFormat, time() - 8 * 3600);
$this->headers["Date"] = date($this->dateTimeFormat, time() - 8 * 3600);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值