如何使用纯PHP在不使用exec('tar')
或任何其他命令的情况下解压缩php中的文件?
我的问题如下;我有一个26mb tar.gz文件,需要上传到我的服务器并解压缩。我曾尝试使用net2ftp来提取它,但上传后它不支持tar.gz解压缩。
我正在使用免费的网络主机,因此他们不允许任何exec()
命令,并且他们不允许访问提示。那我该如何解决这个问题?
PHP是否有内置命令?
答案 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扩展名。