Dennis Wronka
Soulcollector
So liebe Leute, ich hab mir mal wieder was ganz besonderes einfallen lassen.
Und zwar ein PHP-Script welches .tar-Archive entpackt.
Das ganz hatte ich mir ueberlegt quasi in einem Installationsscript fuer Websites zu nutzen.
Also, Install-Script hochladen, .tar(.gz)-Archiv hochladen, Install-Script ausfuehren, gluecklich sein.
Mit der Arbeit mit gZip-Archiven in PHP hab ich mich ja schon beschaeftigt, daraus ist dieses kleine Script entstanden.
Jetzt ist es mit gZip ja noch recht einfach, da dieses von PHP unterstuetzt wird, anders sieht es jedoch mit TAR aus. Da gibt es keine schicken Funktionen fuer.
Natuerlich koennte man das alles ueber einen einfachen Shell-Aufruf via exec() oder system() regeln, aber das waere ja zu einfach, und oft auch aus SafeMode-Gruenden nicht machbar.
Darum hab ich einfach mal ein paar .tar-Archive erstellt und geschaut was dabei so rumkommt.
Das Ergebnis ist schon garnicht schlecht, aber auch noch nicht wirklich gut, denn bisher kann mein Script nur Archive entpacken die ausschliesslich reine Textfiles beinhalten. Sobald irgendwelche Binaer-Files (wie z.B. Bilder) in's Spiel kommen gibt es das groesste Durcheinander seit erscheinen des letzten Harry Potter Buches.
Nun ja, lange Rede wenig Sinn: Das folgende Script ist also dazu gedacht .tar-Archive zu entpacken.
Und wie gesagt, fuer reine Text-Dateien funktioniert das auch ganz gut, auch Unterverzeichnisse werden erstellt und Dateien dort hinein gelegt.
untar.php
Jetzt wollte ich Euch einfach mal bitten mit mir zusammen nach der Moeglichkeit zu suchen dieses Script universell zu gestalten. Sodass jede Art von Datei extrahiert werden kann.
Vielleicht faellt ja jemandem was dazu ein.
Viel Spass, und viel Erfolg.
Falls ich Fortschritte mache werde ich diese natuerlich hier bekannt geben.
Und zwar ein PHP-Script welches .tar-Archive entpackt.
Das ganz hatte ich mir ueberlegt quasi in einem Installationsscript fuer Websites zu nutzen.
Also, Install-Script hochladen, .tar(.gz)-Archiv hochladen, Install-Script ausfuehren, gluecklich sein.
Mit der Arbeit mit gZip-Archiven in PHP hab ich mich ja schon beschaeftigt, daraus ist dieses kleine Script entstanden.
Jetzt ist es mit gZip ja noch recht einfach, da dieses von PHP unterstuetzt wird, anders sieht es jedoch mit TAR aus. Da gibt es keine schicken Funktionen fuer.
Natuerlich koennte man das alles ueber einen einfachen Shell-Aufruf via exec() oder system() regeln, aber das waere ja zu einfach, und oft auch aus SafeMode-Gruenden nicht machbar.
Darum hab ich einfach mal ein paar .tar-Archive erstellt und geschaut was dabei so rumkommt.
Das Ergebnis ist schon garnicht schlecht, aber auch noch nicht wirklich gut, denn bisher kann mein Script nur Archive entpacken die ausschliesslich reine Textfiles beinhalten. Sobald irgendwelche Binaer-Files (wie z.B. Bilder) in's Spiel kommen gibt es das groesste Durcheinander seit erscheinen des letzten Harry Potter Buches.
Nun ja, lange Rede wenig Sinn: Das folgende Script ist also dazu gedacht .tar-Archive zu entpacken.
Und wie gesagt, fuer reine Text-Dateien funktioniert das auch ganz gut, auch Unterverzeichnisse werden erstellt und Dateien dort hinein gelegt.
untar.php
PHP:
<?php
if (isset($_GET['tar']))
{
$tarfile=fopen($_GET['tar'],"r");
$value=0;
$c=chr(0);
$tarcontent=array();
while (feof($tarfile)==false)
{
$tarcontentvalue="";
while ((ord($c)==0) && (feof($tarfile)==false))
{
$c=fgetc($tarfile);
}
while ((ord($c)!=0) && (feof($tarfile)==false))
{
$tarcontentvalue.=$c;
$c=fgetc($tarfile);
}
$tarcontent[]=$tarcontentvalue;
}
$tarfile=fclose($tarfile);
$count=0;
while ($count<count($tarcontent))
{
if (substr($tarcontent[$count],-1)=="/")
{
echo "Creating ".$tarcontent[$count]."<br>";
mkdir($tarcontent[$count]);
$count+=13;
}
elseif (!empty($tarcontent[$count]))
{
echo "Extracting ".$tarcontent[$count]."<br>";
$newfile=fopen($tarcontent[$count],"w");
fwrite($newfile,$tarcontent[$count+13]);
$newfile=fclose($newfile);
$count+=14;
}
else
{
$count++;
}
}
}
?>
Jetzt wollte ich Euch einfach mal bitten mit mir zusammen nach der Moeglichkeit zu suchen dieses Script universell zu gestalten. Sodass jede Art von Datei extrahiert werden kann.
Vielleicht faellt ja jemandem was dazu ein.
Viel Spass, und viel Erfolg.
Falls ich Fortschritte mache werde ich diese natuerlich hier bekannt geben.