我正在尝试用PHP编写一个脚本来下载一个大的zip文件(2,663,439,370字节),但遇到了一个有趣但令人沮丧的问题:该脚本下载了前2,147,483,647个字节,然后继续下载文件,但不是从字节号2,147,483,648、2,147,483,649等开始附加它,而是从字节号1开始附加字节到文件中。
所以,下载的文件由这些字节组成:字节1、字节2、...字节2,147,483,647、字节1、字节2...依此类推。
我注意到2,147,483,647是32位系统可以存储的最大整数值。然而,我的服务器是64位系统,可以存储比那更大的值。为了证明这一点,var_dump((int) 2147483648)返回正确的整数。
我的下载脚本是尽可能正确的(从php.net复制粘贴而来)。
有人遇到过这个问题吗?
所以,下载的文件由这些字节组成:字节1、字节2、...字节2,147,483,647、字节1、字节2...依此类推。
我注意到2,147,483,647是32位系统可以存储的最大整数值。然而,我的服务器是64位系统,可以存储比那更大的值。为了证明这一点,var_dump((int) 2147483648)返回正确的整数。
我的下载脚本是尽可能正确的(从php.net复制粘贴而来)。
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="Certificat.zip"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
有人遇到过这个问题吗?
9223372036854775807
。 - MonkeyZeus