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
, resource $handle
[, int $length
= -1
] )
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
.
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);
?>
위 예제의 출력:
5c6ffbdd40d9556b73a21e63c3e0e904
This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.