Webdesign in Siegen

*.tar dekomprimieren

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

*.tar dekomprimieren

Beitragvon Avedo am 05.02.2008, 19:13

Abend!
Es ist wieder mal so weit. Der kleine Andy bastelt mal wieder an einer kleinen Klasse herum. Da auf vielen Servern die nötigen Funktionen zum dekomprimieren von *.tar-Archiven oftmals nicht vorhanden sind, habe ich mich etwas mit der Materie von *.tar-Archiven beschäftigt und eine kleine Klasse gebastelt, die das mit den einfachen file()-Funktionen löst. Leider funktioniert sie nicht und ich weiß nicht warum. Ich bekomme trotz error_reporting(E_ALL) keine Fehler angezeigt. Kann mir irgendjemand helfen? Bin echt am verzweifeln. ich hoffe ich habe den Code ausreichend dokumentiert, sodass er leicht verständlich ist.
Code: Alles auswählen
<?php
error_reporting(E_ALL);

/* TarHandler class */
class TarHandler
{       
   /**
   * Unpacks a tar-archiv
   *
   * @name TarHandler::untar()
   * @access public
   * @param String $tar   path to tar-archiv
   * @param String $to   relativ path
   * @return boolean
   */
   public function untar($tar, $to)
   {
      // does the tar-archiv exists
      if (file_exists($tar))
      {   
         // create relativ dir   
         mkdir($to);
         
         // open tarball
         $tar = fopen($tar, 'rb');
         
         // do until reaching end of tar-archiv
         while (!feof($tar))
         {   
            //count number of files
            $i++;
            
            // read info-block
            $info = fread($tarfile, 512);
            $data[$i][name] = chr(substr($info, 0, 100));
            $data[$i][mode] = chr(substr($info, 100, 8));
            $data[$i][uid] = chr(substr($info, 108, 8));
            $data[$i][gid] = chr(substr($info, 116, 8));
            $data[$i][size] = chr(substr($info, 124, 12));
            $data[$i][time] = chr(substr($info, 136, 12));
            $data[$i][check] = chr(substr($info, 148, 8));
            $data[$i][link] = chr(substr($info, 156, 1));
            $data[$i][linkname] = chr(substr($info, 157, 100));
            
            // read content-block
            for ($rec = 0; $rec < $data[$i][size]; $rec+=512)
            {
               $content = chr(fread($tarfile, 512));
            }
            
            
            $file = fopen($data[$i][name], 'w');
            fwrite($file, $content);
            fclose($file);
         }
         
         // close tar-file
         fclose($tarfile);
      }
      
      else
      {
         throw new Exception('Tarball does not exist.');
      }
   }
}

try
{   
   $file = exec('gzip -d NestedSets.tar.gz');
   
   $unpack = new TarHandler();
   $unpack->untar($file, 'NestedSets');
}

catch(Exception $e)
{
   return $e->getMessage();
}

?>

MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 511
Registriert: 09.12.2007
Wohnort: Göttingen

Re: *.tar dekomprimieren

Beitragvon Avedo am 06.02.2008, 21:49

Abend!
Habe es jetzt scheinbar weitestgehend in den Griff bekommen. Waren ein paar sehr dumme Fehler dabei. Man sollte Abends nicht so lange am PC sitzen. Müde lässt es sich nicht so gut programmieren.
MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 511
Registriert: 09.12.2007
Wohnort: Göttingen


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast