Jika Anda menemui error "Checksum mismatch" saat menggunakan Tablestore SDK untuk PHP di Windows, kemungkinan besar Anda menjalankan versi PHP sebelum PHP 7, yang secara efektif berarsitektur 32-bit di Windows. Lakukan upgrade ke PHP 7 64-bit atau versi yang lebih baru untuk mengatasi masalah ini.
Deskripsi masalah
Error berikut muncul saat menjalankan Tablestore SDK untuk PHP di Windows dengan PHP 5.6:
Fatal error: Uncaught exception 'AliyunOTSOTSClientException' with message 'Checksum mismatch. expected:120,actual:-48'
Penyebab
Ini merupakan keterbatasan yang dikenal dalam ekosistem PHP, bukan bug pada SDK. Tablestore menggunakan integer 64-bit secara internal. Pada platform 32-bit—yaitu kombinasi CPU, OS, server web, dan binary PHP—PHP hanya dapat merepresentasikan integer 64-bit sebagai string, yang menyebabkan perhitungan checksum menghasilkan nilai yang salah.
Di Windows, versi PHP sebelum PHP 7 tidak benar-benar berarsitektur 64-bit, meskipun sistem operasi yang mendasarinya berarsitektur 64-bit.
Solusi
Peringatan: Tablestore tidak mendukung PHP 32-bit. Di Windows, artinya versi PHP sebelum PHP 7 tidak didukung.
Lakukan upgrade ke PHP 7 64-bit atau versi yang lebih baru. Kami merekomendasikan PHP 7 untuk performa optimal. Untuk memverifikasi arsitektur PHP yang sedang Anda gunakan, jalankan phpinfo() dan periksa bidang Architecture pada output:
Architecture: X86 — PHP Anda berarsitektur 32-bit. Lakukan upgrade ke PHP 7 64-bit atau versi yang lebih baru.
Architecture: X64 — PHP Anda sudah mendukung integer 64-bit. Masalahnya berasal dari sumber lain.