如何在不使用exec('tar')
或任何其他命令的情况下,使用纯PHP解压缩tar.gz文件?
我的问题如下:我有一个26MB的tar.gz文件需要上传到我的服务器并进行解压缩。我尝试使用net2ftp进行解压缩,但它不支持上传后的tar.gz解压缩。
我正在使用免费的Web主机,因此他们不允许任何exec()
命令,并且不允许访问提示符。那么我该如何解压缩这个文件呢?
PHP是否有内置命令可以使用?
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::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');