Uncategorized

Fuel: lỗi crypt.php ở php 5.4

Mô tả lỗi:
Fuel\Core\FuelException [ Error ]:
Crypt::verify_mac – Argument 1: Message Authentication Code is not the correct length; is it encoded?
COREPATH//classes/crypt.php @ line 372

Lỗi này chỉ xảy ra với fuelphp 1.8 ở phiên bảng php 5.4

Cách sửa:
1. Nâng cấp phiên bản php
2. Sửa lại file core/classes/crypt.php
Line 257:

$auth = Binary::safeSubstr($message, $length - SODIUM_CRYPTO_GENERICHASH_BYTES_MAX);

Nguyên nhân function safeSubstr gọi tới hàm substr với 3 tham số: string, start, length. Nhưng dòng code trên chỉ truyền vào 2 tham số. Với php 5.4, với mặc định length = 0 thì nó sẽ trả về null nên dẫn đến lỗi.
Sửa lại function trên:

$auth = Binary::safeSubstr($message, $length - SODIUM_CRYPTO_GENERICHASH_BYTES_MAX, SODIUM_CRYPTO_GENERICHASH_BYTES_MAX);