2010-05-17 58 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