PHP Untar-gz without exec()?

2022-08-30 16:00:25

在不使用或任何其他命令的情况下,如何使用纯PHP在php中解tar-gz文件?exec('tar')

我的问题如下;我有一个26mb的tar.gz文件,需要上传到我的服务器并提取。我尝试过使用net2ftp来提取它,但它不支持tar.gz上传后解压缩。

我正在使用免费的Web主机,因此它们不允许任何命令,并且不允许访问提示。那么,我该如何去解开它呢?exec()

PHP 有内置命令吗?


答案 1

从 PHP 5.3.0 开始,您不需要使用 .Archive_Tar

有一个新的类可以处理 tar 存档:PharData 类

要提取存档(使用 PharData::ExtractTo(),其工作方式类似于):ZipArchive::extractTo()

try {
    $phar = new PharData('myphar.tar');
    $phar->extractTo('/full/path'); // extract all files
} catch (Exception $e) {
    // handle errors
}

如果你有一个tar.gz存档,只需在提取之前解压缩它(使用PharData::d ecompress()):

// decompress from gz
$p = new PharData('/path/to/my.tar.gz');
$p->decompress(); // creates /path/to/my.tar

// unarchive from the tar
$phar = new PharData('/path/to/my.tar');
$phar->extractTo('/full/path');

答案 2

PEAR 提供了Archive_Tar,该类同时支持 Gzip 和 BZ2 压缩,前提是您分别加载了 zlib 和 bz2 扩展。


推荐