Wenn’s mit dem
header('Location: http://www.example.com');
mal nicht funktioniert, liegt es daran, dass schon eine Ausgabe vorher stattgefunden hat.
Manchmal kann es aber durchaus kompliziert sein, diese Ausgabe zu finden, teilweise meldet auch das error.log nichts, dann hilft dir eine freundliche PHP-Funktion weiter, die du zu Testzwecken direkt vor das header-Kommando stellst:
$file = ''; $line = ''; headers_sent($file, $line); print_r($file, $line);
headers_sent zeigt dir nun die Stellen , die vorher bereits eine Ausgabe durchgeführt haben.
Neben dieser vollkommen valider Methode, gibt es noch einen „automatischeren Weg“.
Wenn man die Fehler-Ausgabe (oder -Logging) aktiviert hat, sieht man, dass eine Warning geworfen wird (“
Cannot modify header information – headers already sent“).
Dort steht dann auch die entsprechende Datei und Zeilennummer.
@Jannik: Bei mir wurde seltsamerweise keine Ausgabe ins Log geschrieben, was mich dazu brachte, einen alternativen Weg zu finden 😉
Kleiner Hinweis: Es heißt headerS, nicht header, ein s fehlt 🙂
Danke für den Hinweis, ist korrigiert 😀