4

我正在尝试通过 PHP 提取 .tar 存档。我正在使用这样的代码:

$phar = new PharData('test.tar');
$phar->extractTo('/home/user/newtest');

它工作正常,但如果我的存档包含一个空目录,则上述代码不会提取它。因此,如果我的 .tar 文件具有以下结构:

user@computer:~/test$ tar -tvf test.tar
drwxrwxr-x user/user         0 2012-12-07 22:35 dir1/
-rw-rw-r-- user/user       798 2012-10-28 23:41 dir1/articles.txt
drwxrwxr-x user/user         0 2012-12-07 22:35 emptyDir/
-rw-rw-r-- user/user       834 2012-09-15 22:47 main.html

打开包装后我得到:

user@computer:~/newtest$ ls -l
drwxrwxr-x 2 user user 4096 Dec.   7 22:35 dir1
-rw-rw-r-- 1 user user  834 Sep.  15 22:47 main.html

因此,未提取空的“emptyDir” 。

有谁知道如何修理它?

提前感谢您的任何帮助!

4

1 回答 1

1

它看起来像是在命令行上test.tar创建的。tar -cf test.tar ...PHP 的Phar库旨在读取phar档案,而不是 tar档案。

PHP 手册显示了 phar、tar 和 zip 之间的区别。当然,PharData应该适用于 tar 存档,因此您可能希望将此作为错误报告给 PHP 开发人员。

目前,如果您想tar在 PHP 中提取档案,您有三个选择:

  1. 使用 PHP 中的库创建存档Phar,然后在 PHP 中提取
  2. 使用Pear 的 Archive_Tar(适用于tartar.gz文件)。
  3. 打电话exec("tar -xf test.tar -C /home/user/newtest");推荐,但可以)
于 2012-12-07T19:43:36.897 回答