2011-12-29 76 views
0

这是我原来的zip的内容:PHP拉链deleteName删除太多

  • 管理/
  • 图像/
  • 包括/
  • 的index.php
  • install.php了
  • 款式/
  • 模板/
  • up负载/
  • 网/

如果我运行这段代码:那剩下

$zip = new ZipArchive; 
    if ($zip->open('update.zip') === TRUE) { 

     $zip->deleteName('include/mysql.php'); 
     $zip->deleteName('install.php'); 

     $zip->extractTo('./update/'); 

     $zip->close(); 

     unlink('./update.zip'); 

    } else { 
     echo 'Fehler'; 
    } 

的文件是:

  • 管理/
  • 图像/
  • 包括/

所有其他被删除。任何想法为什么?

+0

如果你不删除任何东西会怎么样?什么是$ zip提取然后? – 2011-12-29 13:45:19

+0

然后它确实提取evrything。只有当它尝试使用该deleteName时,它才会删除太多... – bluewhile 2011-12-29 13:49:57

+0

如果删除其他文件而不是那些文件,会发生什么情况?输出是否改变?不同目录之间有什么不同?他们都有文件吗? – 2011-12-29 13:57:02

回答

2

尝试在deleteName()后关闭ZIP文件,然后再次打开提取。

<?php 
$zip = new ZipArchive; 
if ($zip->open('update.zip') === TRUE) { 

    $zip->deleteName('include/mysql.php'); 
    $zip->deleteName('install.php'); 
    $zip->close(); 

    $zip->open('update.zip'); 
    $zip->extractTo('./update/'); 
    $zip->close(); 

    unlink('./update.zip'); 

} else { 
    echo 'Fehler'; 
} 
?> 
+0

我认为这是答案。其作品 ! +1 – 2011-12-29 14:38:37

+0

它的工作原理!谢谢! – bluewhile 2011-12-29 14:51:57

+0

这是为什么这样工作? – goat 2011-12-29 14:57:53