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, 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().
handle
Open file handle as returned by any stream creation function.
length
Maximum number of characters to copy from handle
into the hashing context.
Actual number of bytes added to the hashing context from handle
.
Przykład #1 hash_update_stream() example
<?php
$fp = tmpfile();
fwrite($fp, 'The quick brown fox jumped over the lazy dog.');
rewind($fp);
$ctx = hash_init('md5');
hash_update_stream($ctx, $fp);
echo hash_final($ctx);
?>
Powyższy przykład wyświetli:
5c6ffbdd40d9556b73a21e63c3e0e904
This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.