2010-05-17 130 views
4

PHP帶來class for ZIP file manipulation。它還允許使用addEmptyDir()創建目錄,並使用deleteName()刪除條目。但刪除不適用於目錄(空或不)。有沒有辦法刪除ZIP文件中的空文件夾(最好是內置PHP功能)?使用PHP從ZIP文件中刪除空目錄

+0

看起來像一個錯誤。 – Artefacto 2010-05-17 13:22:47

+0

不知道這是否會有所作爲,但您是否嘗試過deleteIndex()函數? – defines 2010-05-18 16:16:36

回答

1

您需要將/附加到目錄名稱。所以,像這樣的工作:

<?php 
    $zip = new ZipArchive; 
    if ($zip->open('test.zip') === TRUE) { 
     $zip->deleteName('testDir/'); 
     $zip->close(); 
    } 
?> 

所以,TESTDIR /對TESTDIR ....

+0

注意:我用這樣的例子更新了官方文檔,並要求擴展維護人員進行澄清。 – 2010-05-19 05:37:34

+0

deleteName()似乎存在更多問題:如果嘗試刪除非空目錄但不刪除它,則返回True。順便說一句。 locateName()目錄也適用於尾部斜槓。 – desolat 2010-05-19 07:26:41

+0

fwiw,desolat和我對此貢獻:http://bugs.php.net/51857 – 2010-05-31 05:02:29

0

您可以隨時將其解壓縮到tmp目錄,使用rmdir()刪除任何空目錄,然後將其重新壓縮。

另一件要檢查的是權限。你確定你對你正在操作的文件有寫權限嗎?

0

有關目錄的概念小紙條。沒有目錄這樣的東西。例如:foo/a.txt和foo/b.txt是兩個條目,但沒有foo /目錄。但是,可以創建一個名爲foo /的條目來「模擬」一個目錄。

刪除方法返回true時,沒有任何東西被刪除看起來像一個錯誤,我問菲利普打開一個新的錯誤http://bugs.php.net,所以我可以儘快修復它。

謝謝!

+1

已經有了這個bug:http://bugs.php.net/bug.php?id=51857 – desolat 2010-05-20 06:44:54