我直接從 Amazon 的暫存器 ( https://webservices.amazon.com/paapi5/scratchpad/index.html )獲取了以下 PHP 代碼,他們在其中提供了樣板代碼來查詢其產(chǎn)品 API。我只對其進(jìn)行了一點(diǎn)點(diǎn)修改以顯示 HTTP 錯(cuò)誤 - 其他所有內(nèi)容都是直接復(fù)制和粘貼。我輸入了自己的憑據(jù)(訪問密鑰、密鑰和合作伙伴標(biāo)簽),代碼在我自己的 macOS 筆記本電腦上完美運(yùn)行,運(yùn)行(常規(guī))PHP 7.1.23。我將代碼移至我的個(gè)人服務(wù)器,它運(yùn)行完美,運(yùn)行 PHP 5.3.10-1ubuntu3.26當(dāng)我將相同的代碼移動(dòng)到客戶的服務(wù)器時(shí),我從 Amazon 收到一條錯(cuò)誤消息,指出請求未正確簽名。錯(cuò)誤是:{"__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."}]}在該機(jī)器上, 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 可執(zhí)行文件有何不同,導(dǎo)致其無法生成正確簽名的請求?
2 回答

慕容3067478
TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
正如評論中所解決的,如果服務(wù)器的時(shí)間與實(shí)際當(dāng)前時(shí)間有相當(dāng)大的差異,則哈希函數(shù)將產(chǎn)生亞馬遜將拒絕的錯(cuò)誤結(jié)果。
重新配置服務(wù)器以使用網(wǎng)絡(luò)同步其時(shí)鐘,或手動(dòng)調(diào)整以反映正確的時(shí)間,以便 PHP 的日期/時(shí)間功能開始返回正確的時(shí)間。

鳳凰求蠱
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
服務(wù)器上的時(shí)間錯(cuò)了大約 5 分鐘,這導(dǎo)致 GMT 時(shí)間也錯(cuò)了,然后我猜亞馬遜不喜歡這個(gè)請求。
一旦我們調(diào)整示例亞馬遜代碼運(yùn)行完美,一切都很好!
非常感謝,
- 2 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報(bào)
0/150
提交
取消