Joachim: moodle: ob_end_flush - ob_end_clean probleme bei bildausgabe

Beitrag lesen

Hi,

ich musste grade einen Fehler in einer mir bis dahin völlig unbekannten Software "moodles" (php) beheben. Konkret ging es um eine Datei, die files (unter bestimmten Voraussetzungen) ausliefert, also auch Bilder. Anstelle der Bilder wurden jedoch der Dateiname, also ...file.php?file=/2/image.jpg mit einem header image/jpeg ausgegeben, und zwar als Grafik.

Die dazugehörige lib nutzt diesen Code zum Ausliefern, in mimetype steht "image/jpeg", path ist der korrekte Bildpfad, und es wird der else-Pfad durchlaufen, also  readfile_chunked() ausgeführt:

@header('Content-Type: '.$mimetype);
        @header('Content-Length: '.$filesize);
        while (@ob_end_flush());
        if ($pathisstring) {
            echo $path;
        } else {
            readfile_chunked($path);
        }

Ich habe in der Doku zu fpassthrough() gelesen, dass ob_end_clean in Fällen automatischer gz-Komprimierung hilft, und habe ob_end_flush damit ersetzt: nun funktioniert es, das Bild wird mit korrektem Header ausgegeben. Ich begreife zwar den Unterschied (Pufferleeren _ohne_ Ausgabe), kann mir aber den Effekt nicht erklären. Kann mir jemand Näheres hierzu sagen?

Gruesse, Joachim

--
Am Ende wird alles gut.