Die Redirektion über den location-Header funktioniert dann zwar nicht mehr (weil Header nur gesetzt werden können solange noch nichts ausgegeben wurde), aber immerhin müsstest Du dann Fehlerausgaben zu Gesicht bekommen.
Im Fehlerfall ist es meist egal, dass dann noch weitere Dinge, wie die Weiterleitung, nicht mehr arbeiten, oder dass das Display zerschossen ist. Wenn der Fehler erfolgreich beseitigt ist, ist ja wieder alles in Ordnung.
So war es mal, aber bei vielen Installationen dürfte das nicht mehr zutreffen!
Wenn das Puffern des Outputs eingeschaltet und der Puffer groß genug ist findet die Weiterleitung trotzdem statt, weil PHP Header und Payload im Puffer brav sortiert.
Aktuell findet sich nach der Installation halbwegs moderner Versionen in /etc/php/7.0/apache2/php.ini
wie vermutlich folgt oder ähnlich:
output_buffering = 4096
ist also On
.
Minimalistisches Testskript:
<html>
<h1>Weiterleitung</h1>
</html>
<?php header("Location: https://google.de"); php?>
Es gab Zeiten, da hat das nicht funktioniert und einen Fehler geworfen. Blick ins Logfile:
127.0.0.1 - - [09/Dec/2017:10:57:18 +0100] "GET /test/weiterleitung.php HTTP/1.1" 302 273 "http://localhost/test/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0"
HTTP 302: Der nachträgliche Einbau der Header geht also sehr wohl! Mindestens bis zum Umzug auf einen fremden Server. Dann sollte man wissen, dass die Ausgabepufferung auch abgeschaltet sein kann. Und natürlich, dass man deshalb nicht damit rechnet, also sowas wie den im Beipiel eingebauten Unsinn durch robuste Programmierung vermeidet.