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 — Fügt Daten aus einem Stream an einen aktiven Hash-Kontext an
context
Der Hashing-Kontext, zurückgegeben von hash_init().
stream
Die Ressource einer geöffneten Datei, wie sie von einer beliebigen Funktion zur Stream-Erstellung zurückgegeben wird.
length
Die maximale Anzahl an Zeichen, die von stream
in den Hashing-Kontext kopiert werden.
Die Anzahl an Bytes, die dem Hashing-Kontext von
stream
hinzugefügt wurden.
Beispiel #1 hash_update_stream()-Beispiel
<?php
$fp = tmpfile();
fwrite($fp, 'Taxi quer durch Bayern.');
rewind($fp);
$ctx = hash_init('sha256');
hash_update($ctx, 'Franz jagt im komplett verwahrlosten ');
hash_update_stream($ctx, $fp);
echo hash_final($ctx);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
0b3a381e71cda8f3abe88b1dc3eb9aa2a53fa033e9802878edd1959c267281a2
This can be obvious, but hash_update_stream() move file pointer. So, use rewind(), if you plan to read the file after hashing.