如何用PHP读取.tar.gz文件?

Mic*_*ael 13 php zip tar

我正在构建一个系统供人们在PHP上传.tar(和.tar.gz,.tar.bz2,.zip等)文件.上传文件很好,但我想列出归档后包含在档案中的文件.

有人可以推荐一个可以读取文件档案的好的PHP库吗?

我在Pear上找到了File_Archive,但它在几年内没有更新.ZipArchive非常适合.zip文件,但我需要能够处理更多文件类型的东西.

更新我在RHEL6,PHP 5.2和Apache 2.2上运行.

Arn*_*anc 27

你可以用这个PharData类做到这一点:

// Example: list files
$archive = new PharData('/some/file.tar.gz');
foreach($archive as $file) {
        echo "$file\n";
}
Run Code Online (Sandbox Code Playgroud)

这甚至适用于phar://流包装器:

$list = scandir('phar:///some/file.tar.gz');
$fd = fopen('phar:///some/file.tar.gz/some/file/in/the/archive', 'r');
$contents = file_get_contents('phar:///some/file.tar.gz/some/file/in/the/archive');
Run Code Online (Sandbox Code Playgroud)

如果您没有Phar,请检查仅PHP实现pecl扩展.


mar*_*rio 5

不要试图自己构建它。使用像http://pear.php.net/package/Archive_Tar这样的现有类来为您处理。

  • @Michael:是的,它同时支持 .gz 和 .bz2 压缩。还有一个 `->listContent` 方法。 (3认同)