为了账号安全,请及时绑定邮箱和手机立即绑定

litespeed php 不会为 Amazon 产品 API 生成正确签名的请求

litespeed php 不会为 Amazon 产品 API 生成正确签名的请求

PHP
波斯汪 2023-09-08 14:22:01
我直接从 Amazon 的暂存器 ( https://webservices.amazon.com/paapi5/scratchpad/index.html )获取了以下 PHP 代码,他们在其中提供了样板代码来查询其产品 API。我只对其进行了一点点修改以显示 HTTP 错误 - 其他所有内容都是直接复制和粘贴。我输入了自己的凭据(访问密钥、密钥和合作伙伴标签),代码在我自己的 macOS 笔记本电脑上完美运行,运行(常规)PHP 7.1.23。我将代码移至我的个人服务器,它运行完美,运行 PHP 5.3.10-1ubuntu3.26当我将相同的代码移动到客户的服务器时,我从 Amazon 收到一条错误消息,指出请求未正确签名。错误是:{"__type":"com.amazon.paapi5#InvalidSignatureException","Errors":[{"Code":"InvalidSignature","Message":"The request has not been correctly signed. If you are using an AWS SDK, requests are signed for you automatically; otherwise, go to https://webservices.amazon.com/paapi5/documentation/sending-request.html#signing."}]}在该机器上, lsphp --version 返回PHP 7.0.27 (litespeed) (built: Jan  4 2018 16:01:06)Copyright (c) 1997-2016 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies    with Zend OPcache v7.0.27, Copyright (c) 1999-2017, by Zend Technologieslsphp 可执行文件有何不同,导致其无法生成正确签名的请求?
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

正如评论中所解决的,如果服务器的时间与实际当前时间有相当大的差异,则哈希函数将产生亚马逊将拒绝的错误结果。

重新配置服务器以使用网络同步其时钟,或手动调整以反映正确的时间,以便 PHP 的日期/时间功能开始返回正确的时间。


查看完整回答
反对 回复 2023-09-08
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

服务器上的时间错了大约 5 分钟,这导致 GMT 时间也错了,然后我猜亚马逊不喜欢这个请求。

一旦我们调整示例亚马逊代码运行完美,一切都很好!

非常感谢,


查看完整回答
反对 回复 2023-09-08
  • 2 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信