B
Bgag
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.
MfG, Andy
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.
PHP:
<?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
$i=0;
while (!feof($tar))
{
//count number of files
$i++;
// read info-block
$info = fread($tar, 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($tar, 512));
}
$file = fopen($data[$i]['name'], 'w');
fwrite($file, $content);
fclose($file);
}
// close tar-file
fclose($tar);
}
else
{
throw new Exception('Tarball does not exist.');
}
}
}
try
{
$file = ./test.tar;
$unpack = new TarHandler();
$unpack->untar($file, 'TestTar');
}
catch(Exception $e)
{
return $e->getMessage();
}
?>
Zuletzt bearbeitet von einem Moderator: