2012-02-23 82 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