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 — Pump data into an active hashing context from an open stream
context
Hashing context returned by hash_init().
stream
Open file handle as returned by any stream creation function.
length
Maximum number of characters to copy from stream
into the hashing context.
Actual number of bytes added to the hashing context from stream
.
Exemplo #1 hash_update_stream() example
<?php
$fp = tmpfile();
fwrite($fp, 'jumped over the lazy dog.');
rewind($fp);
$ctx = hash_init('sha256');
hash_update($ctx, 'The quick brown fox ');
hash_update_stream($ctx, $fp);
echo hash_final($ctx);
?>
O exemplo acima produzirá:
68b1282b91de2c054c36629cb8dd447f12f096d3e3c587978dc2248444633483
This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.