Markus Baersch

Analytics · Beratung · Lösungen

Start » Blog » PHP / Software

11.05.2007

Sollte sich irgendjemand (außer mir Depp) mal fragen, warum es - in meinem Fall "plötzlich", nachdem es gerade noch vor der letzten Änderung ging - nicht mehr korrekt gelingt, eine Datei per PHP zu senden, obwohl der "gewollte Header" eigentlich prima aussieht, sollte mal nach Leerzeichen / Leerzeilen vor (und nach) dem PHP-Code suchen.


Dummerweise reicht ein einziges Leerzeichen vor dem einführenden "<?php" vollkommen aus, um die ganze Nummer zu versauen und einen text/html-Content zu generieren - egal, was der PHP-Code danach versucht, so dass die Datei nicht wie gewünscht gesendet, sondern statt dessen - je nach Dateityp mehr oder weniger sinnvoll - im Browser dargestellt wird.



<?php
//da oben steht es, das blöde Leerzeichen! Weg damit, schon klappt´s!
$userfile = "pfad/meine_lustige_datei.zip" ;
header("Content-Type: application/octet-stream") ;
header("Content-Length: " .(string)(filesize($userfile)) ) ;
header('Content-Disposition: attachment; filename="'.basename($userfile).'"') ;
header("Content-Transfer-Encoding: binary\n") ;
readfile($userfile) ;
?>


Also: Wenn ein ansonsten gut funktionierender Code wie dieser Folgende hier nicht in der Lage ist, eine Datei wie gewünscht zu senden, sondern diese im Browser anzeigt, mal besonders die erste Zeile nach führenden Leerzeichen durchsuchen. Spart ggf. viel Zeit, die ich heute durch sinnloses "Debugging auf gut Glück" verbraten habe 🙁

Hat Dir der Beitrag geholfen?

Dann freue ich mich, wenn Du ihn mit anderen teilst! Wenn Du magst, gib einen aus ;)

© 2001 - 2024 Markus Baersch