未能创建ZIP存档,但没有错误消息


Failure to create ZIP archive, but no error messages

我正在尝试创建一些图像文件的ZIP存档。这个文件目录,我已经添加到一个名为$valid的数组中。这个数组中的每个项目都是一个字符串,如下所示:

"uploads/1845_45678_862_speaker.jpg"

这是我正在尝试使用的代码,用于创建所有这些物理文件的ZIP存档:

$zip = new ZipArchive();
$zip_name = "ptx_speakers.zip";
$zip->open($zip_name, ZipArchive::CREATE);
foreach ($valid as $zip_item) {
    $zip->addFile($zip_item);
}
$zip->close();

然而,这不起作用。即使打开了错误报告,我也只能看到一个空白屏幕。之后我尝试了以下代码,但这里也没有显示:

if (!file_exists($zip_name)) {
    "No file."
}

有人能在我的代码中看到致命的缺陷吗?如果你愿意的话,我可以粘贴更多(比如我如何创建初始数组)。

有人能在我的代码中看到致命的缺陷吗?

是的。

$zip->open($zip_name, ZipArchive::CREATE);

不起作用,并且您没有检查错误。

它应该是类似的东西

$res = $zip->open($zip_name, ZipArchive::CREATE); 
if($res === true){
    foreach ($valid as $zip_item) {
        $zip->addFile($zip_item);
    }
    $zip->close();
} else {
    echo "Error creating zip file: " . $res;
}

如果一切正常,$res将为真,然后转到foreach等。

如果不是,则具有其中一个值。检查一下,你就会发现哪里出了问题。

在你的代码中,你正在进行

$zip->addFile($zip_item);

但是zip文件没有创建,这将导致一些错误。

信不信由你,我的问题不在于我的脚本,而在于我的文件/文件夹权限。由于我一开始就有上传文件的权限,我以为我可以用这个文件写作,但没有,我不得不将它的权限更新为757,然后脚本第一次发挥了作用。