某些mp3文件会产生zip错误


Certain mp3 files create zip error

我一直在尝试为一些mp3制作一个zip存档。我遇到的问题是,一些mp3只是以奇怪的方式破坏了压缩过程。如果我不包含这些文件之一,一切都很好;如果我把其中一个放进去,那么它就会变成梨形。

最终,我想将 zip 文件放在我的服务器上供人们下载,我想使用 php 即时制作它。如果我在存档中不包含任何有问题的文件,它可以正常工作。如果我这样做,那么我会收到"500 内部服务器错误",但服务器错误日志中没有任何内容。通过为该过程的每一步创建我自己的错误日志,在我尝试进行 zip->关闭时,它似乎失败了。

我尝试退后一步,并使用 7zip 在本地制作 zip 存档。如果我包含一个问题文件,我可以这样做,但是如果我将此zip存档上传到服务器然后下载,则下载已损坏。如果我不包含问题文件,那很好。winzip也会发生同样的情况。

我总共有大约 100 个 mp3,其中大约 6 个会导致这种行为。它们都具有相同的权限,它们都存在,它们都在同一个目录中,它们的大小大致相同。我什至尝试从源文件再次制作 mp3 .wav - 新版本也发生了同样的事情。

我完全被难住了。我找遍了,也找不到任何线索。帮助!!

有几个原因可能是(它们可以一起发生(:(a(PHP zip创建中的错误代码 - 在您的代码或执行实际压缩的代码中,(b(上传或下载文件时使用的文本模式。

正如你自己所看到的,使用7zip解决了PHP zip的问题,所以压缩代码中一定有一些错误。现在,如果您放置创建的 ZIP 并且它们被下载为损坏,这可能意味着该文件是使用文本模式提供的。

其中一个不明显的原因是在 PHP 中启用了 mbcs 函数重载。启用重载后,strlen 和类似函数在将二进制数据传递给它们时,开始产生意外结果(这是因为它们将输入视为 UTF8 字符串(。