Dateien werden von PHP fehlerhaft heruntergeladen/gespeichert...

nop0x90

Mitglied
Hallo,
versuche seit einiger Zeit verzweifelt eine Datei (Flash/SWF) korrekt mit PHP herunter zu laden (auf Debian). Es klappt weder mit file_get_contents(); noch mit einer gebastelten Funktion, die ein minimales HTTP Request sendet. Die Datei wird zwar empfangen, aber irgendwas geht da total schief, sodass ich sie noch nicht einmal ausführen kann. Wenn ich sie aber mit dem Firefox herunterlade (auf einer Win32 Maschine) klappts.
Bin für hilfreiche Ideen (Antworten) sehr, sehr dankbar.



HTTP Header (vom Server)
Code:
HTTP/1.x 200 OK
Date: Wed, 12 Mar 2008 22:34:59 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Wed, 12 Mar 2008 22:34:59 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/x-shockwave-flash
Also ich sehe da irgendwie gar nichts außergewöhnliches.



Ein kleiner Ausschnitt aus dem Hex-Editor
(Grüne Stellen = Wie es sein sollte; Rote Stellen = Wie es ist)
Code:
07 00 08 01 07 28 00 00 00 3C 96 07 00 08 02 07 C6 00 00 00 3C 96 07 00 08 03 07 B7
00 00 00 3C 96 07 00 08 04 07 A3 00 00 00 3C 96 07 00 08 05 07 B9 00 00 00 3C 96 07
00 08 06 07 BF 00 00 00
Code:
.....(...<–.....Æ...<–.....·...<–.....£...<–.....¹...<–.....¿...

Code:
07 00 08 01 07 32 00 00 00 3C 96 07 00 08 02 07 D4 00 00 00 3C 96 07 00 08 03 07 67
00 00 00 3C 96 07 00 08 04 07 0A 00 00 00 3C 96 07 00 08 05 07 0B 00 00 00 3C 96 07
00 08 06 07 9A 00 00 00
Code:
.....2...<–.....Ô...<–.....g...<–.........<–.........<–.....š...
 
Es klappt weder mit file_get_contents(); noch mit einer gebastelten Funktion
Also zum Beispiel so
PHP:
<?php
if(($mHandle = fopen("./bild.png", "w+")) !== false){
  fwrite($mHandle, file_get_contents("http://stealth.to/img/s3_01.png"));
  fclose($mHandle);
}else{
  echo("Das ging in die Hose.");
}
?>

Kann es sein, dass es etwas mit dem "chunked" zu tun hat? Dann wird nämlich immer so eine komische Zahlenbuchstabenkombination (meistens vierstellig) mitempfangen. Oder vielleicht Win32 -> Linux/Unix Fehler? :(
 
Als chunked versendete Daten sind speziell kodiert (siehe Chunked Transfer Coding) und müssen erst wieder dekodiert werden. Der Browser als Client übernimmt dies selbstständig, der Webserver scheinbar aber nicht. Das müsstest du dann wohl selbst machen.
 
Zurück