PHP ZipArchive zip文件赢得';无法在Mac OS中打开

PHP ZipArchive zip文件赢得';无法在Mac OS中打开,php,macos,ziparchive,Php,Macos,Ziparchive,可能重复: 我使用PHP ZipArchive允许网站用户将几个文件组合成一个zip文件,然后下载它们。它在我正在运行的FedoraLinux计算机上运行得非常好。但是,如果我使用Mac笔记本电脑下载这些文件,这些文件将不会解压缩,双击会创建一个cpgz文件。双击cpgz文件创建另一个cpgz,等等 通过谷歌搜索,zip cpgz循环看起来是一个非常常见的问题,但几乎所有的解决方案都表明原始文件的格式很差;一个不存在的初始文件的zip,一个由windows机器生成的带有不同文件结尾的zip,诸

可能重复:

我使用PHP ZipArchive允许网站用户将几个文件组合成一个zip文件,然后下载它们。它在我正在运行的FedoraLinux计算机上运行得非常好。但是,如果我使用Mac笔记本电脑下载这些文件,这些文件将不会解压缩,双击会创建一个cpgz文件。双击cpgz文件创建另一个cpgz,等等

通过谷歌搜索,zip cpgz循环看起来是一个非常常见的问题,但几乎所有的解决方案都表明原始文件的格式很差;一个不存在的初始文件的zip,一个由windows机器生成的带有不同文件结尾的zip,诸如此类的东西。我认为我的情况并非如此,因为它在我的Linux机器上运行良好

但是,在终端中使用unzip打开zip文件会发出警告

警告[filename.zip]:在zipfile的开头或内部额外增加3个字节(仍在尝试处理)

如果可以避免的话,我不想告诉用户使用终端

这里有一个指向其中一个文件的链接,我无法提供指向我正在运营的网站的链接,它尚未启动并运行。该文件应包含8个ascii文件(它们是火星表面某个地点的表面温度)


使用PHP的ZipArchive类的另一种替代方法是。当用户的托管帐户上无法使用PHP的ZipArchive时,我们在定制的CMS中使用它作为后备方案。下面是我们如何使用它的一个示例:

if ( class_exists('ZipArchive') ) {
    ... zip up the files with the PHP ZipArchive class...
} else {
    require_once('pclzip.lib.php');
    $pclZip = new PclZip($destination);
    $pclZip->create($files, PCLZIP_OPT_REMOVE_ALL_PATH);
    return file_exists($destination);
}

我意识到这并不能回答为什么ZipArchive创建的zip文件会变得一团糟的问题,但希望它能为您提供另一种工作方式。

使用PHP的ZipArchive类的另一种选择是。当用户的托管帐户上无法使用PHP的ZipArchive时,我们在定制的CMS中使用它作为后备方案。下面是我们如何使用它的一个示例:

if ( class_exists('ZipArchive') ) {
    ... zip up the files with the PHP ZipArchive class...
} else {
    require_once('pclzip.lib.php');
    $pclZip = new PclZip($destination);
    $pclZip->create($files, PCLZIP_OPT_REMOVE_ALL_PATH);
    return file_exists($destination);
}

我意识到这并不能回答为什么ZipArchive创建的zip文件会变得一团糟的问题,但希望它能为您提供另一种工作方式。

您使用过哪些浏览器?我以前有过这样的经历:当通过某个浏览器(本例中是Chrome)下载时,压缩文件无法正确解压缩。我试着在Safari中下载文件,效果很好。我不知道为什么会这样,但请尝试使用其他浏览器,看看它是否有效。

您使用过哪些浏览器?我以前有过这样的经历:当通过某个浏览器(本例中是Chrome)下载时,压缩文件无法正确解压缩。我试着在Safari中下载文件,效果很好。我不知道为什么会这样,但是试着使用不同的浏览器,看看它是否有效。

另一个问题是关于Zip流的,它说明了ZipArchive不起作用的原因,但有关于如何修复它的建议。这是一个老问题,已经结束,但我有可能的答案。我在下载动态zip时也遇到了同样的问题。问题在于,
echo$zip
之前打印了调试文本,创建了一个格式不正确的文件,WinRAR会忽略该文件,但存档实用程序不会。在这种情况下,三个字节可能是来自utf8源文件的BOM表。如果有人有这个问题,请使用编辑器检查.zip文件,它必须以PK开头,之前没有其他问题。另一个问题是关于zip流的,它说明了ZipArchive无法工作的原因,但有关于如何修复它的建议。这是一个旧问题,已关闭,但我有可能的答案。我在下载动态zip时也遇到了同样的问题。问题在于,
echo$zip
之前打印了调试文本,创建了一个格式不正确的文件,WinRAR会忽略该文件,但存档实用程序不会。在这种情况下,三个字节可能是来自utf8源文件的BOM表。如果有人有这个问题,请使用编辑器检查.zip文件,它必须以PK开头,之前没有其他内容。我尝试过Safari,但它仍然无法为我解压。然而,这确实让我怀疑服务器是否发送了错误的MIME类型。是的,我也尝试过Safari,同样的问题。我想我有正确的MIME类型,我有:header('Content-type:application/zip')。我试过Safari,但它仍然没有为我解压。然而,这确实让我怀疑服务器是否发送了错误的MIME类型。是的,我也尝试过Safari,同样的问题。我想我有正确的MIME类型,我有:header('Content-type:application/zip')。