Так что для тех, кто не знает PHP, как 64-битные, так и 32-битные сборки для Windows имеют ограничение дизайна, что означает такие функции, как «размер файла», «md5_file», «sha1_file» и т. Д. Не может читать файлы размером более 2 ГБ, и скрипт php должен ошибка или вернуть неверный / неправильный размер файла.
$fname = $_FILES['Filedata']['tmp_name'];
$filesource = sha1_file($fname);
Решение с помощью командной строки Windows выглядит следующим образом.
CertUtil -hashfile "C:\Users\C0n\Desktop\2GB-file.MP4" SHA1
Как я могу использовать это в своем PHP-коде, чтобы получить сумму sha1 большого файла.
<?php
$result = shell_exec ('CertUtil -hashfile "C:\Users\C0n\Desktop\2GB-file.MP4" SHA1');
var_dump ($result);
Мой рабочий код выглядит следующим образом.
//Check OS is Windows
if(substr(PHP_OS, 0, 3) == "WIN") {
//input file
$input = 'CertUtil -hashfile "C:\Users\C0n\Desktop\2GB-file.MP4" SHA1';
//Eexecute input and put the response into a array
exec($input, $response);
//Remove spaces between the hash output.
$str = str_replace(' ', '', $response[1]);
//Display the hash of the file
echo $str;
}