PHP导致文件下载格式错误

PHP导致文件下载格式错误,php,utf-8,stream,iis-7.5,Php,Utf 8,Stream,Iis 7.5,情况相当直截了当: PHP5.3.2被用作处理(混淆)服务器上某些静态文件的中介。这一过程已经实施了一段时间(1-2年)。最近(最近几天)一些文件的EOF标记被截断/格式不正确。在某些情况下,这些文件本身已经有一年或两年多没有更改 我所尝试的: readfile(), 文件获取内容, 和 fopen()、fread()、fclose()进程 当直接链接到服务器上的文件时,下载时不需要PHP处理它们,并且它们的EOF(特别是%%EOF)保持不变 但是,在PHP处理它们并将它们发送到客户端之后,%%

情况相当直截了当:

PHP5.3.2被用作处理(混淆)服务器上某些静态文件的中介。这一过程已经实施了一段时间(1-2年)。最近(最近几天)一些文件的EOF标记被截断/格式不正确。在某些情况下,这些文件本身已经有一年或两年多没有更改

我所尝试的:

readfile()
文件获取内容
, 和
fopen()、fread()、fclose()
进程

当直接链接到服务器上的文件时,下载时不需要PHP处理它们,并且它们的EOF(特别是
%%EOF
)保持不变

但是,在PHP处理它们并将它们发送到客户端之后,
%%EOF
将变为
%%E
,并且该文件将被它们本机的应用程序损坏。其余丢失的是4096块的一部分(通常约为3.1kb)

对我来说,这意味着流提前终止,剩余的字节永远不会离开缓冲区——不管我做了什么尝试,似乎仍然会在文件末尾保留这些字节

一些环境信息:

文件为UTF-8,PHP ini的默认编码设置为UTF-8,PHP在处理过程中检测到文件的UTF-8编码,流chunksize未更改(4096),通过IIS的gzip不是PHP模块

并非所有通过此过程获取的文件都会出现这种畸形。查看文件的稳定性、大小、创建日期等。。失败的文件之间似乎没有任何真正的共同点。传递的文件和损坏的文件之间也没有可区分的特征


提前感谢

您是否尝试在文本文件中打开下载的文件以查看下载的内容?是的,这就是错误/截断的EOF的识别方式