创建 zip 时没有错误,但不会创建

2022-08-30 18:20:21

我写这个代码是为了创建一个ZIP文件并保存它。但不知何故,它只是没有显示任何错误,但它也没有创建ZIP文件。代码如下:

$zip = new ZipArchive;
$time = microtime(true);
$res = $zip->open("maps/zips/test_" . $time . ".zip", ZipArchive::CREATE);
if ($res === TRUE) {
    echo "RESULT TRUE...";
    $zip->addFile("maps/filename.ogz","filename.ogz"); //Sauerbraten map format
    $zip->addFromString('how_to_install.txt', 'Some Explanation...');
    $zip->close();
    $zip_created = true;
    echo "FILE ADDED!";
}

我做错了什么,我该如何解决?


答案 1

Apache或php可能没有在该目录中创建zip存档的权限。来自ZipArchice::open上的一条评论:

如果您正在写入或保存的目录没有正确的权限集,您将不会收到任何错误消息,并且看起来一切正常...除非它不会改变!

相反,请确保收集 ZipArchive::close() 的返回值。如果它是假的...它不起作用。

将 else 子句添加到 if 语句并转储$res以查看结果:

if($res === TRUE) {
    ...
} else {
    var_dump($res);
}

答案 2

有2种情况下,zip不会生成错误。

  1. 确保您添加到 zip 中的每个文件都有效。即使调用时
    一个文件不可用,存档也将失败,并且不会创建您的zip文件。zip->close
  2. 如果您的文件夹没有写入权限,zip 将不会报告错误。它将完成,但不会创建任何内容。

推荐