Fehler: Warning: Cannot modify header information

Umbriell

Mitglied
Hallo,

ich bekomme wenn ich meine Website auf den Server stelle diese Fehlermeldung.beim Aufruf:

"Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/web/TEST.php:1) in /usr/www/users/web/TEST.php on line 4"

PHP:
<?php 
error_reporting(E_ALL);
ini_set('display_errors',true);
header('Location:login.php');
?>

Das ist der komplette Code in der Datei. Ich bekomme den gleichen Fehler in der Original-Seite und habe bis auf diese paar Zeilen alles rausgeschmissen. Was verursacht den Fehler und wie kann ich ihn beheben?

Lokal im XAMPP funktioniert alles.

Besten Dank im Voraus.

VG
Umbriell
 
Was verursacht den Fehler und wie kann ich ihn beheben?
Vor header() darf keinerlei Form einer Ausgabe erfolgen. Hierzu zählt auch ein Leerzeichen oder Zeilenumbruch zu Beginn des Codes (vor <?php).

Der Klassiker eben. Und Google kennt ihn auch, wenn der Wortlaut der Fehlermeldung (oder Thementitel) genannt wird.
  1. http://de2.php.net/manual/de/function.header.php
  2. http://www.vlmedia.de/304/haufiger-php-error-cannot-modify-header-information-headers-already-sent
  3. https://www.arclab.com/en/kb/php/ph...-header-information-headers-already-sent.html
  4. ...
[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
Hi,
danke für die Antwort.

Aber auch nach dem Entfernen aller möglichen Ausgaben wird nicht weitergeleitet.
Ich habe jetzt mal dies getestet und bekomme eine leere Seite angezeigt:

PHP:
<?php
header('Location:http://www.google.com');
?>

Ich versteh nicht, wieso das im web nicht funktioniert bei mir lokal aber doch.
Hast Du eine Erklärung für mich?

VG
Umbriell
 
Ich habe jetzt mal dies getestet und bekomme eine leere Seite angezeigt:

PHP:
<?php
header('Location:http://www.google.com');
?>

Ich versteh nicht, wieso das im web nicht funktioniert bei mir lokal aber doch.
Hast Du eine Erklärung für mich?
Der Code funktioniert bei mir erwartungsgemäß auf beiden Servern (lokal & online).

Bewegst Du Dich im Netz auf einem HTTPS-Server?

Dann versuch es von dort aus mal ohne den Protokoll-Präfix http: im URL:
PHP:
<?php
header('Location: //www.google.com');
?>
 
Ist ken HTTPS. Die Datei ist UTF8 ohne BOM kodiert.
Ich suche jetzt schon die ganze Zeit nach einer Einstellung in der Serverkonfiguration, die das ganze unterbinden könnte.
Da finde ich aber auch nichts und ich wüßte auch nicht, warum die Möglichkeit geblockt werden sollte.

Fällt Dir noch was ein?

VG
Umbriell
 
In meinem Serverlog taucht die erfolgreiche Weiterleitung (HTTP-Status 302) auf:
Code:
*IP anonymisiert* - - [30/Dec/2016:22:44:52 +0100] "GET /headerlocation.php HTTP/1.0" 302 208 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
 
Was passiert denn wenn Du folgendes versuchst :)

PHP:
<?php
ob_start();
header('LOCATION: http://www.google.de');
ob_end_flush();
?>

oder:
PHP:
<?php
ob_start();
@header('LOCATION: http://www.google.de');
ob_end_flush();
?>

Theoretisch sollte das klappen :)

Ich verwende die erste Funktion und diese klappt bei Mir :)
 
Bei beiden wird wieder die leere Seite angezeigt. Die Anzeige in der Adresszeile des Browsers bleibt unverändert.

Ich tappe komplett im Dunkeln. Hat noch jemand eine Idee woran es liegen kann?

VG
Umbriell
 
Was passiert denn wenn Du folgendes versuchst :)

PHP:
<?php
ob_start();
header('LOCATION: http://www.google.de');
ob_end_flush();
?>

oder:
PHP:
<?php
ob_start();
@header('LOCATION: http://www.google.de');
ob_end_flush();
?>

Theoretisch sollte das klappen :)

Ich verwende die erste Funktion und diese klappt bei Mir :)
Ich gehe davon aus, dass sich @Umbriell mit meinen eingangs empfohlenen Links gestern auseinandergesetzt, und die diversen Lösungsvarianten durchgespielt hat.

Deine Empfehlung mit ob_***() ist dort nämlich auch auf der Liste :
Code
PHP:
<?php
ob_start();
echo "Umleitung...";
header("Location: index.php");
ob_flush();
ob_end_clean();
?>
ob_***-Funktionen kontrollieren den Output-Buffer und können die Ausgaben aufschieben.
Zitat-Quelle: http://www.vlmedia.de/304/haufiger-...der-information-headers-already-sent#behebung

Ich tappe komplett im Dunkeln. Hat noch jemand eine Idee woran es liegen kann?
Gäbe es nicht besagte PHP-Fehlermeldung, könnte man ja fast annehmen, dass auf dem Server kein PHP läuft :confused:

Hast Du mal die Server-/Error-Logs vom gestrigen Abend studiert, was darin bei Deinen einzelnen Aktionen festgehalten wurde?

Siehe mein gestriger letzter Post:
In meinem Serverlog taucht die erfolgreiche Weiterleitung (HTTP-Status 302) auf:
Code:
*IP anonymisiert* - - [30/Dec/2016:22:44:52 +0100] "GET /headerlocation.php HTTP/1.0" 302 208 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
 
Zurück