情况非常简单:
PHP 5.3.2被用作处理(混淆)服务器上某些静态文件的中介。这个过程已经存在了一段时间(1 - 2年)。最近(最近几天),一些文件的EOF标记被截断/格式错误。在某些情况下,这些文件本身在一年或两年内没有改变。
我尝试过:
readfile()
,
file_get_contents
,
和
fopen(), fread(), fclose()
进程
直接链接到服务器上的文件,在没有PHP处理的情况下下载,并且维护它们的EOF(特别是%%EOF
)。
但是,在PHP处理它们并将它们发送到客户端之后,%%EOF
变为%%E
,并且该文件被其原生应用程序视为已损坏。丢失的剩余部分是4096块(通常约3.1kb)的一部分
对我来说,这说明流过早地终止,其余的字节永远不会从缓冲区中消失 - 但是我尝试过的所有内容似乎仍然将这些字体留在文件的末尾。
一些环境信息:
文件是UTF-8,PHP ini的默认编码设置为UTF-8,php在处理过程中检测到文件的utf-8编码,流chunksize没有被更改(4096),gzip通过IIS而不是PHP模块。
并非所有通过此过程获取的文件都会受到此错误的影响。检查文件的沉着,大小,创建日期等。失败文件之间似乎没有任何真正的共性。传递的文件和损坏的文件之间也没有可区别的特征
提前致谢