PHP ile sıkıştırılmış dosyaları sunucu üzerinde açma (All archive extractor)

PHP Script
Önceki yazılarımızda sıkıştırılmış bir dosyanın php exec yardımıyla sunucu üzerinde nasıl kolayca açılabileceğinden bahsetmiştik. Peki ya servis sağlayıcı güvenlik önlemi olarak exec fonksiyonunu devre dışı bıraktıysa veya sunucu üzerinde açılmak istenilen dosya .zip‘ten hariç farklı bir uzantıya sahipse (.tar, .tar.gz vb) ne yapmalı? İşte All Archive Extractor isimli güzide class tam da bu noktada imdadımıza yetişiyor. İsminden de anlaşılabileceği üzere bilinen tüm sıkıştırma formatlarını destekliyor ve sunucu üzerindeki hemen hiç bir kısıtlama çalışmasına engel teşkil etmiyor.

index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
/**
  This script will show how to extract
  all sort of Archive (Tar, Gzip, Zip) etc..
*/

require 'ArchiveExtractor.class.php';

/* Init. ArchiveExtractor Object */
$archExtractor=new ArchiveExtractor();

/* Extract */
// -Archive -Path
$extractedFileList=$archExtractor->extractArchive("/dosya/yolu/dosya.tar.gz","/dosya/yolu/acilacak/klasor/");

?>
<pre>  <?php print_r($extractedFileList); ?></pre>

/dosya/yolu/dosya.tar.gz” ile ifade edilen yere arşiv dosyanızın bulunduğu dizini, “/dosya/yolu/acilacak/klasor/” bölümüne ise arşivin extract edileceği (açılacağı) klasörün tam yolunu belirtmelisiniz.

ArchiveExtractor.class.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
class ArchiveExtractor {
  /**
    Extract Archive(TarGzip, Zip) based on file suffix
    @param string Archive file
    @param string extraction path

    @return array
  */


  function extractArchive($archFile, $extractPath=".") {
    echo "ARCH: ".$archFile."<br />ExtPath: $extractPath";
    $result="";
   
    if(eregi("tar|gz|tar.gz|tgz",$archFile)) {
      $result=$this->extractTarGzip($archFile,$extractPath);
    }
    else if(eregi("zip",$archFile)) {
      $result=$this->extractZip($archFile,$extractPath);
    }
   
    /* Return result */
    return $result;
  }

  /**

    TarGzip file extractor function
   
    @param string Archive file
    @param string extraction path
   
    @return string
   
  */

  function extractTarGzip($archFile, $extractPath=".") {
    /* include TAR library */
    require_once 'pcltar.func.php';
   
    /* extract and return list of extracted files */
    return PclTarExtract($archFile,$extractPath);
  }
 
 
  /**

    Zip file extractor function

    @param string Archive file
    @param string extraction path

    @return array

  */

  function extractZip($archFile, $extractPath=".") {
    /* include Zip Library file */
    require 'pclzip.class.php';
   
   
    /* Extract */
    $zip=new PclZip($archFile);
   
    /* list of extracted files */
      return $zip->extract($extractPath);
  }
 
  /**
    Get Tar/Gzip archive's file list
    @param string
    @return array
  */

  function getTarGzipList($archFile) {
    /* include TAR library */
    require_once 'pcltar.func.php';
   
    /* return list */
    return PclTarList($archFile);
  }
 
  /**
    Get Zip archive's file list
    @param string
    @return array
  */

  function getZipList($archFile) {
    /* include Zip Library file */
    require 'pclzip.class.php';


    /* Extract */
    $zip=new PclZip($archFile);

    /* return */
    return $zip->listContent();
  }
   
}
?>

Scriptin kullandığı (ve gerçekten uzun olan) kütüphaneler ile modülleri kolaylık olması açısından paketledim. Paket dosyasını buradan indirebilirsiniz.

Bu kullanışlı ve bir çok durumda can kurtaracak olması muhtemel script için Hossain Khan‘a teşekkür ediyoruz.

İlginizi Çekebilecek Diğer İçerikler

Facebook Yorumları

14 Yorum

Uyarı: Yorumlarda link kullanmayınız. Link içeren yorumlar otomatik olarak spam kabul edilmektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir