This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.
(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)
hash_update_stream — Добавляет данные из открытого потока в активный контекст хеширования
context
Контекст хеширования, возвращаемый hash_init().
stream
Дескриптор открытого файла, возвращаемый любой функцией создания потока.
length
Максимальное число символов для копирования из stream
в контекст хеширования.
Фактическое количество байт, добавленное в контекст хеширования из stream
.
Пример #1 Пример использования hash_update_stream()
<?php
$fp = tmpfile();
fwrite($fp, 'прыгает вокруг ленивой собаки.');
rewind($fp);
$ctx = hash_init('sha256');
hash_update($ctx, 'Наглый коричневый лисёнок ');
hash_update_stream($ctx, $fp);
echo hash_final($ctx);
?>
Результат выполнения приведённого примера:
199f52fc9f2492c64449ed96003f135f8ea428e353e50c40b0c1a16b9c16f571
This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.