Brocken: PHP fsockopen tar.gz

Beitrag lesen

Hallo,

ich stehe vor einem Problem, und komme nicht recht weiter. Es geht um folgendes:

Ich lade von einem per htaccess-Datei geschütztem Bereich ein tar.gz-Archiv runter. Dazu nutze ich die fsockopen-Funktion von PHP :

  
header("Content-type: text/html");  
$sock = fsockopen($host, 80, $errno, $errstr, 5); // 80 = Port, 5 = Timeout  
fputs($sock, "GET ".$uri." HTTP/1.1\r\n");  
fputs($sock, "Host: ".$host."\r\n");  
fputs($sock, "Authorization: Basic ".base64_encode($user.":".$pass)."\r\n");  
fputs($sock, "Connection: close\r\n\r\n");  
while(!feof($sock))  
  $targz .= fgets($sock, 4096); // Antwort lesen  
fclose($sock);  

Den so erhaltenen String speichere ich mit der Funktion file_put_contents("dateiname.tar.gz",$targz) auf dem Server ab.

Das Funktioniert alles problemlos. Nur wenn ich dieses Archiv entpacken will, erhalte ich von der Shell folgende Fehlermeldung:

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors

Das Archiv ist also fehlerhaft. Ziehe ich das Archiv herkömmlich via Browser ist es gültig. Das heisst, ich mache beim Speichern wohl einen Fehler. Muss ich den String $targz noch irgendwie umwandeln? Ich habe ich schon von hex zu bin umgewandelt, aber das brachte mir auch keinen Erfolg. Die Fehlermeldung blieb die gleiche.

Vielleicht kann mir jemand einen Tip geben?

Danke! Brocken