使用PHP SDK時出現Checksum mismatch異常
更新時間:
Copy as MD
在Windows系統中使用Tablestore PHP SDK時出現Checksum mismatch異常,通常是因為PHP版本低於7.0,在Windows上等效於32位運行環境。升級到PHP 7及以上的64位版本即可解決。
問題現象
在Windows系統中使用PHP 5.6運行Tablestore PHP SDK時,拋出以下異常:
Fatal error: Uncaught exception 'AliyunOTSOTSClientException' with message 'Checksum mismatch. expected:120,actual:-48'
可能原因
這是PHP生態的已知限制,並非SDK缺陷。Tablestore內部使用64位整型。在32位運行環境下——即CPU、作業系統、Web伺服器和PHP二進位檔案均為32位的組合——PHP只能以string類型表示64位整型,導致校正和計算結果不正確。
在Windows系統中,PHP 7之前的版本並非真正的64位,即使底層作業系統是64位也不例外。
解決方案
警告
Tablestore不支援32位PHP。在Windows系統中,這意味著PHP 7之前的版本均不受支援。
升級到PHP 7及以上的64位版本。運行phpinfo(),在輸出中查看Architecture欄位,即可確認當前PHP的架構類型:
Architecture為X86:當前PHP為32位版本,需升級到PHP 7及以上的64位版本。
Architecture為X64:當前PHP已支援64位整型,問題不在於架構,需排查其他原因。
该文章对您有帮助吗?