gpt4 book ai didi

php - ZipArchive::close(): 读取错误: 是一个目录

转载 作者:行者123 更新时间:2023-12-02 00:46:34 25 4
gpt4 key购买 nike

我想弄清楚这个问题,但我无法想象为什么它会一直发生。我正在将文件添加到 ZipArchive,当我尝试关闭它时,出现目标是目录的错误。但我很确定它不是。

这是压缩函数的代码:

function create_zip($folder, $destination) {
$valid_files = get_files($folder);
if(count($valid_files)) {
$zip = new ZipArchive();
if($zip->open($destination, ZIPARCHIVE::CREATE) !== true) {
return false;
}
//add the files
foreach($valid_files as $file) {
$zip->addFile($file,$file);
}
$zip->close();
return file_exists($destination);
}
else
{
return false;
}
}

function get_files($folder){
$valid_files = array();
$files = scandir($folder);
foreach($files as $file) {
if(substr($file, 0, 1) == "." || !is_readable($folder . '/' . $file)) {
continue;
}
if(is_dir($file)){
array_merge($valid_files, get_files($folder . '/' . $file));
} else {
$valid_files[] = $folder . '/' . $file;
}
}
return $valid_files;
}

我这样调用它,所以它实际上不应该是一个目录:

$dest = "backups/" . time() . "_backup.zip";
if(file_exists($dest)){
if(is_dir($dest)) {
rmdir($dest);
} else {
unlink($dest);
}
}
create_zip('crawler/out', $dest);

也许这里有人可以帮我解决这个问题。谢谢!

西蒙

最佳答案

在这种情况下,目录不是 zip 存档,而是添加到其中的文件。

尝试在添加文件之前添加:

if (file_exists($file) && is_file($file))

并在此位置更改文件名而不是文件路径:

$zip->addFile($file,$file);

关于php - ZipArchive::close(): 读取错误: 是一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43334411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com