Windows PHP 替换 SHA1_FILE >= 2GB 错误修复

Windows PHP Replacing SHA1_FILE >= 2GB error fix

所以对于那些不知道 PHP windows 的 64 位和 32 位构建都有设计限制,这意味着像 "filesize"、"md5_file"、"sha1_file" 等。无法读取超过 2GB 的文件,php 脚本将出错或 return 文件的 invalid/incorrect 大小。

$fname = $_FILES['Filedata']['tmp_name'];
$filesource = sha1_file($fname);

windows命令提示符的解决方案如下。

CertUtil -hashfile "C:\Users\C0n\DesktopGB-file.MP4" SHA1

我如何在我的 PHP 代码中使用它来接收大文件的 sha1 总和。

<?php

$result = shell_exec ('CertUtil -hashfile "C:\Users\C0n\DesktopGB-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\DesktopGB-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;
}