Roger: fremde grafik lesen/ausgeben mit file und readfile

moin!

ich bin einerverzweifelungstat nahe...
ich will nach wie vor noch eine grafik von einem entfernten server einlesen. per readfile() klappt das. allerdings nicht per file. keine ahnung, an was es liegen kann...

<?
ini_set("display_errors", true);
error_reporting(E_ALL);
$datei = "http://www.gxfurl.de/logo.gif";
//readfile($datei);
$test= file($datei);
echo implode("", $test);
?>

es kommt schon mal keine fehlermeldung. wenn ich allerdings den "quelltext" der grafik ansehen möchte, stell ich schon unterschiede fest. nicht nur in der größe der ausgabe (die fehlerhafte ausgabe ist kürzer), sondern ab einer gewissen stellen steht plötzlich was ganz anderes :( ist dann wohl klar, dass die grafik dann nicht angezeigt werden kann.

echo "<pre>"; print_r (implode("", $test)); echo "</pre>";

muss ich irgendwas beachten? fopen wrappers ist aktiviert. allerdings funktioniert zb. copy() nicht. aber wieso geht dann file()?! *verrücktwerd*

kann mir einer weiterhelfen?

gruß.
roger.

--
Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  1. sali

    kann mir einer weiterhelfen?

    Dem Posting zu entnehmen hast Du schon einiges berücksichtigt und versucht - ich bin kein Spezialist im Umgang mit Files, aber gäbe es denn keine anderen Möglichkeiten? Hast Du andere Filezugriffmethoden versucht?

    Wenn ich die Doku durchsehe, wäre für Binärdateien fread() geeignet. Warum willst Du file() verwenden?

    kaepten

    1. moin!

      bei fread() gibts den fehler 500. das ding wird also als cgi-modul ausgeführt...
      liegt darin vielleicht der hase begraben?

      gruß.
      roger.

      --
      Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
      1. Hello,

        bei fread() gibts den fehler 500. das ding wird also als cgi-modul ausgeführt...

        Woher der internal Server Error kommt, kann ich dir per Ferndiagnos ohne das ganze Script und sämtliche Einstellungen zu kennen auch nicht sagen, aber warum file() nicht funktioniert, das vermute ich:

        Es handelt sich um zwei verschiedene Plattformen, bei denen Textdateien mit unterschiedlichen Zeilenende-Zeichen ausgezeichnet werden. Die automatische Zeilenendeerkennung ist eingeschaltet. Das führt zu einer Transformation der Zeilenendezeichen.

        Da Bilder aber nun mal keine Textdateien sind, aber trotzdem #10 oder #13 oder #13#10 enthalten können, machst Du das Bild damit kaputt.

        Hier kann man ersatzweise die neuere Funktion

        $datei = file_get_contents("Resource_Name");

        benutzen, oder

        while(!feof($fh))
        {
          $datei.= fread($fh,128);
        }

        Die angeforderte Packetgröße bei fread() auf eine entfernte Ressource (jetzt mit 2 s, da deutsch) sollte 576Bytes nicht übersteigen. Woher diese Zahl nun genau kommt, weiß ich auch nicht mehr auswendig.

        Versuchs mal so und gib uns eine Rückmeldung, ob es klappt.

        Frohes Weihnachtsfest

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen