Rolf b: PDF über Dateu Ausliefern, klappt nicht immer

Beitrag lesen

Die Leerstelle ist dir sicher irrtümlich durchgerutscht :)

Der Path gehört sicher nicht in den filename der Content-Disposition, aber ich würde behaupten, dass das kein Grund für ein "Geht/Geht nicht" Problem ist.

Guck auf jeden Fall mal ins PHP Handbuch, da machen die Herrschaften etwas ähnliches und da siehst Du, wie der Content-Disposition Header richtig aussehen muss und wie du den Path entfernst.

Klickst Du hier

Eine Abfrage auf Dateiexistenz kann auch nicht schaden. Wenn sie fehlt, kannst Du einen Redirect auf eine Error-Seite machen (oder zumindest am Server loggen, dass eine falsche Ressource angefordert wurde).

Den Einwand von Robert, dass fileinfo und readfile zu Overhead führen, würde ich im Übrigen nicht gelten lassen, weil fileinfo() wohl kaum die Größe durch Einlesen der Datei bestimmt, sondern ins Directory schaut. Also intern auch nichts anderes tut als fopen+fstat+fclose. Da readfile() einen Namen braucht, kann ich die resource-Rückgabe von fopen auch nicht für den readfile wiederverwenden, sondern müsste das Kopieren selbst programmieren. Kann man machen, lohnt aber hier sicher nicht die Mühe.

Aber trotzdem. Ein "mal geht's und mal nicht" ist damit noch nicht erklärt. Hast Du error_reporting eingeschaltet? Diese beiden Zeilen habe ich aus einem stackoverflow-Artikel, weiß nicht ob es anders eleganter geht.

error_reporting(E_ALL);
ini_set('display_errors', 1); 

Gruß Rolf