没有exec()的PHP Untar-gz?

时间:2012-02-23 15:55:12

标签: php exec tar

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

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

我正在使用免费的网络主机,因此他们不允许任何exec()命令,并且他们不允许访问提示。那我该如何解决这个问题?

PHP是否有内置命令?

2 个答案:

答案 0 :(得分:44)

自PHP 5.3.0起,您不需要使用Archive_Tar

有一个新的类来处理tar档案:The PharData class

提取档案(使用ZipArchive::extractTo()起作用的PharData::extractTo()):

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

如果您有tar.gz存档,只需在解压缩之前解压缩(使用PharData::decompress()):

// 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');

答案 1 :(得分:3)

PEAR提供Archive_Tar class,它支持Gzip和BZ2压缩,前提是你分别加载了zlib和bz2扩展名。