2011-12-29 74 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