echo $begrüßung;
Wenn ein Bild ausgegeben werden soll, [...] darf vorher und hinterher keine andere Ausgabe stattfinden, weil diese vom Browser als Bilddaten zu interpretieren versucht werden würde.
Habe ich auch erst gedacht, aber ein Auskommentieren der Zeile (sollte ja auch die Ausgabe verhindern) hat nix geändert.
Vielleicht ist das auszugebende unsichtbar, beispielsweise Whitespace-Zeichen außerhalb von <?php ?>. Wenn in einer Datei nur PHP-Code steht, ist am Anfang zwar immer brav ein <?php, aber am Ende schmuggeln sich gern Whitespaces hinter das ?>. Wenn man das ?> am Ende weglässt, kann das nicht passieren. Ebenso stört eine UTF-8-BOM, die ein Editor beim Dateispeichern eingefügt hat.
Ich verstehe eh nicht ganz, was 'while (ob_end_flush())' hier ausgegeben werden sollte, und warum es dazu überhaupt eine while Schleife braucht. Manchmal ist fremde Software wirklich mühsam...
Das ist ein schönes Beispiel, warum es wichtig ist, die Gedanken, die zu einem Stück Code geführt haben, als Kommentar zu notieren. Auf der von dir erwähnten Handbuchseite zu fpassthrough() steht in einem User-Kommentar dieses Konstrukt aber mit …clean nebst Erklärung. Es dient dazu, alle Ausgabepuffer (davon können ja mehrere nacheinander geöffnet werden) zu schließen und deren Inhalt zu entsorgen (zumindest beim …clean, das …flush ergibt für mich auch keinen Sinn).
Sagt Dir denn die Problematik mit der gz-Komprimierung etwas?
Nein, aber wenn du die nicht verwendest, dann hast du die ja nicht. Wenn doch, dann schalte sie zumindest mal zum Testen ab.
echo "$verabschiedung $name";