从Apache下载的Zip文件 – 在Ubuntu中确定,在Windows 7中无效

我试图创build一个zip存档,从网站上下载。 这必须在我们客户的最小努力下才能实现(例如,不需要安装特殊的解压缩工具)。 事件的顺序是:

  • 一堆文件被收集/创build。
  • PHP(v2.2)使用shell_exec()调用linux zip(v2.31)将文件归档到一个文件中。
  • PHP发送头文件如下(通过Apache v2.2.22):

    Content-Type: application/zip Content-Length: (whatever) Content-Disposition: attachment; filename="whatever.zip" Content-Transfer-Encoding: binary 
  • PHP使用readfile将文件发送到浏览器。

使用Ubuntu附带的Archive Manager工具可以打开收到的zip文件,而不必麻烦。 但是,当使用Firefox(最新版本)下载到Windows 7并以正常的压缩文件夹打开时,它会报告文件无效。

原始压缩文件与下载版本的比较显示, 两个下载版本都有一个额外的16字节标题,如下所示:

 2f3c 6f62 7964 0a3e 2f3c 7468 6c6d 0a3e 

但在其他方面相同。

这个头文件肯定是导致压缩文件在Windows上失败的原因:当原始文件通过networking共享传输时,Windows能够毫无困难地打开它。

标题似乎不会被添加到其他下载的文件(当然不是PDF)。

我的第一个想法是,Apache是​​gzip编码的stream,但相关的模块甚至没有安装(和接收的头没有提到任何压缩)。 同样,为.zip扩展添加明确的asis处理程序也没有效果。

提前感谢您的任何build议或帮助您可以给!