2012-02-23 19 views
23

Bir dosyayı php ile exec('tar') veya başka bir komut kullanmadan saf PHP kullanarak nasıl unter-gz?PHP Untar-gz, exec olmadan()?

Sorunum şu şekildedir; Sunucumun üzerine yüklenmesi ve ayıklanması gereken bir 26mb tar.gz dosyası var. Net2ftp'i ayıklamak için kullanmayı denedim, ancak yüklemeden sonra tar.gz'nin açılmasını desteklemiyor.

Ücretsiz bir web barınağı kullanıyorum, bu nedenle herhangi bir exec() komutuna izin vermiyorlar ve bir komut istemine erişime izin vermiyorlar. Peki bunu nasıl açacağım?

PHP'de yerleşik bir komut var mı?

cevap

37

PHP 5.3.0'dan beri Archive_Tar'u kullanmanız gerekmez.

Katran arşivinde çalışmak için yeni sınıf var: The PharData class.

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

Ve eğer bir tar.gz arşivini varsa, sadece (PharData::decompress() kullanarak) özü önce sıkıştırın::

bir arşiv ayıklamak için (ZipArchive::extractTo() gibi çalışır PharData::extractTo() kullanarak)

// 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

Herhangi bir nedenle PharData :: extractTo, Windows üzerinde PHP 5.4.0'da çalışmıyor. Neden – TinyGrasshopper

+0

[sorunuzu] gördüm (http://stackoverflow.com/q/13870800/569101) ama test etmek için 5.4.0 ile bir Windows yok, üzgünüm. – j0k

+0

Ayrıca, belgelere aykırı, ikinci argüman olarak dizinleri almak için görünmüyor. –

3

PEAR, sırasıyla, zlib ve bz2 eklentilerinin yüklü olması koşuluyla, hem Gzip hem de BZ2 sıkıştırmalarını destekleyen Archive_Tar class sağlar.