2012-02-23 103 views
23

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

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

我正在使用免费的虚拟主机,因此它们不允许任何exec()命令,并且它们不允许访问提示。那么我怎么去解决这个问题呢?

PHP有内置命令吗?

回答

37

由于PHP 5.3.0,你不需要使用Archive_Tar

在tar档案上有新的课程:The PharData class

要提取的存档(使用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'); 
+1

由于某些原因,PharData :: extractTo在Windows的PHP 5.4.0中无法使用。不知道为什么 – TinyGrasshopper 2012-12-14 03:12:18

+0

我看到[你的问题](http://stackoverflow.com/q/13870800/569101),但我没有5.4.0的Windows来测试它,对不起。 – j0k 2012-12-14 08:24:15

+0

与文献相反,它似乎并不把目录作为第二个参数。 – 2013-06-10 01:58:37