加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 没有创建ZIP文件,但没有触发错误

发布时间:2020-12-13 13:34:05 所属栏目:PHP教程 来源:网络整理
导读:我正在使用ZipArchive: function zip_dir($source,$target){ $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source,FilesystemIterator::SKIP_DOTS),RecursiveIteratorIterator::SELF_FIRST); $zip = new ZipArchive();
我正在使用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得到没有错误/异常……

编辑:

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

并打印:无法打开文件:权限被拒绝“.
那是什么意思?我知道每个目录都是可写的,bc我可以在里面用PHP创建新文件……

编辑2:

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

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

来自php.net的两条评论

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读