gpt4 book ai didi

php - 未创建 ZIP 文件,但未触发错误

转载 作者:可可西里 更新时间:2023-11-01 12:30:22 25 4
gpt4 key购买 nike

我正在使用 ZipArchive:

function zip_dir($source, $target){

$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($source, \FilesystemIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST);

$zip = new \ZipArchive();
if($zip->open($target, \ZipArchive::CREATE) !== true)
exit('cannot create zip');

foreach($iterator as $file){
$zip->addFile($file);
print $file . '<br>';
}


$zip->close();
return $target;
}


zip_dir(__DIR__ . '/test/', __DIR__ . '/testarchive.zip');

我可以看到文件列表,但最后我找不到应该创建的 zip 文件。我没有从 ZipArchive 收到任何错误/异常...

编辑:

我在 $zip->close(); 之后添加了 print $zip->getStatusString();

并打印:无法打开文件:权限被拒绝”。那是什么意思?我确定每个目录都是可写的,因为我可以在其中使用 PHP 创建新文件...

编辑 2:

if(is_writable(dirname($target)))
print 'target dir is writable...';

它打印出来,所以目录是可写的。感觉就像我在暮光之城......

最佳答案

来自 php.net 的两条评论

如果您将多个文件添加到一个 zip 并且您的 $zip->close() 调用返回 FALSE,请确保您添加的所有文件确实存在。显然 $zip->addFile() 返回 TRUE,即使该文件实际上并不存在。在调用 $zip->addFile() 之前,最好使用 file_exists()is_readable() 检查每个文件。

伙计们,不要忘记检查 zip 是否为空 - 否则根本不会创建 zip,服务器也不会发出警告!

关于php - 未创建 ZIP 文件,但未触发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12895089/

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