使用 PCLZip 或 ZipArchive 压缩文件时出现意外的存档结束

jas*_*nmp 2 php zip ziparchive pclzip

目前想知道是否有人遇到过损坏的 zip 文件。我目前正在使用以下代码

// Multiple File Downloads

require_once('includes/pclzip.lib.php');

$archive = new PclZip('archive.zip');

$v_list = $archive->create('robots.txt,index.php');

if ($v_list == 0) {
  die("Error : ".$archive->errorInfo(true));
}

$file_url = 'archive.zip';

header('Content-Type: application/zip');

header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 

readfile($file_url);
Run Code Online (Sandbox Code Playgroud)

要创建 zip 存档并强制下载 zip,最终将通过单击按钮来启动,但现在我只是尝试创建一个实际有效的存档。

无论我是否使用内置ZipArchive类或使用PclZip库,我都会遇到这个问题。

一件非常奇怪的事情是,当我通过 FileZilla 下载时,创建并放置在服务器上的 zip工作得很好,但如果我强制下载文件,所有的赌注都会消失。我在多个浏览器中进行了尝试,每个浏览器的结果都是相同的。

真烦人。我承认这是我第一次尝试实现此类功能,所以也许我遗漏了一些东西。我看过一些关于类似问题的帖子,但不幸的是这些解决方案对我不起作用。任何可以提供的帮助将不胜感激。

Paw*_*iel 5

如果它在服务器上工作并且仅在下载时损坏 - 最有可能的是 PHP 与 ZIP 内容一起回显某些内容注意?警告?),因此下载时它会损坏。尝试使用文本编辑器打开下载的 ZIP,并检查其开头或结尾是否有一些 PHP 输出。在 Linux 上它将是:

cat downloaded.zip | tail
cat downloaded.zip | head
Run Code Online (Sandbox Code Playgroud)