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().
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
.
Example #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);
?>
Exemplul de mai sus va afișa:
5c6ffbdd40d9556b73a21e63c3e0e904
This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.