PHP ist recht seltsam: Man kann den HTTP-Header ändern, aber nur wenn man vorher nicht bereits etwas ausgegeben hat. Dafür reicht auch schon eine Leerzeile. Das Problem tauchte bei mir auf, und nun musste ich alle Dateien des Projektes nach demselben Fehler durchsuchen. Folgender Aufruf genügt:
% ruby -e "Dir['*.php'].each { |f| puts f + ' is buggy.' \\
if File.read(f)[/\\n\\s*\\n\\z/] }"
Dir['*.php'] findet dabei alle php-Dateien im Verzeichnis (rekursive Suche in allen Unterverzeichnissen geht mittels '**/*.php'). Dann wird jeder Dateiname ausgegeben, wenn die Datei mit \n\s*\n (einer leeren Zeile) endet.
Korrektur: \z statt $ am Ende der Regexp.
Kommentar schreiben