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でアーカイブを抽出する場合は、次の3つのオプションがあります。

  1. PHPのライブラリを使用してアーカイブを作成し、PharPHPで抽出します
  2. PearのArchive_Tartarおよびファイルで機能します)を使用しtar.gzます。
  3. 電話exec("tar -xf test.tar -C /home/user/newtest");(お勧めしませんが、機能します)
于 2012-12-07T19:43:36.897 に答える