• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Header-Fnkt funktioniert trotz voriger Ausgabe

Muffin123

Neues Mitglied
Hallo,
ich meiner Test-Umgebung unter XAMPP 3.2.1 mit PHP 5.6.3 erscheint die Fehler-Meldung "Warning: Cannot modify header information - headers already sent by ..." nicht - trotz voriger Ausgabe anderer Warnings, Notices und manueller Test-Ausgaben... Kann mir jemand weiterhelfen? Liegt das an XAMPP bzw. der php.ini, wo man das Verhalten umstellen kann?
Viele Grüße Marvin
 
Hallo,
ich meiner Test-Umgebung unter XAMPP 3.2.1 mit PHP 5.6.3 erscheint die Fehler-Meldung "Warning: Cannot modify header information - headers already sent by ..." nicht - trotz voriger Ausgabe anderer Warnings, Notices und manueller Test-Ausgaben... Kann mir jemand weiterhelfen? Liegt das an XAMPP bzw. der php.ini, wo man das Verhalten umstellen kann?
Viele Grüße Marvin

Google doch einfach mal nach der Fehlermeldung...
Sorry, aber die Frage kommt so oft, die kann ich schon nicht mehr hören.

Wenn du sie nicht mehr sehen willst:
PHP:
error_reporting(0);
Da ist der Fehler dann aber trotzdem noch.
 
Das ist ja eben das Problem. Die altbekannte Fehlermeldung kommt bei mir *nicht* mehr. Ich vermisse sie sozusagen: header() fnkt. trotz voriger Ausgaben...
 
Das ist ja eben das Problem. Die altbekannte Fehlermeldung kommt bei mir *nicht* mehr. Ich vermisse sie sozusagen: header() fnkt. trotz voriger Ausgaben...
Es funktioniert nicht - die Warnung wird einfach nicht ausgegeben.

PHP:
error_reporting(E_ALL);
ini_set('display_errors', true);

Sollte funktionieren. Kannst du natürlich auch direkt in der php.ini setzen.
 
Ich habe die Lösung gefunden!
http://php.net/manual/de/function.header.php

"Sie können die Limitierung, dass Header vor jeglicher Ausgabe gesendet werden müssen, umgehen, indem Sie Outputbuffering benutzen, mit dem Overhead, dass Ihre gesamten Ausgaben an den Browser auf dem Server gepuffert werden, bis Sie diese senden. Sie können dies tun, indem Sie in Ihrem Skript ob_start() und ob_end_flush() verwenden, oder indem Sie die Konfigurationsdirektive output_buffering in der php.ini bzw. in den Server-Konfigurationsdateien auf On setzen."

scbawik, lehne ich mich zu weit aus dem Fenster, wenn ich behaupte, dass du hier auch noch was lernen konntest?
 
Normalerweise sollte man das output_buffering nicht automatisch auf on setzen, besser ist da eine saubere Programmierung, dann braucht man das auch nicht.
 
scbawik, lehne ich mich zu weit aus dem Fenster, wenn ich behaupte, dass du hier auch noch was lernen konntest?

Mir ist diese Einstellung durchaus bekannt.
Was ich nicht wusste, ist dass in neueren PHP Versionen output_buffering anscheinend standardmäßig aktiviert ist.
So gesehen habe ich etwas gelernt. Bringt mir zwar nichts - aber gut :)
 
Zuletzt bearbeitet:
Ich kannte diese Einstellung leider noch nicht :/ Aber jetzt zum Glück :) Vlt. liegt es ja auch an dem neuen Xampp-Paket, da es eh nur für die Entwicklung ist. Auf jeden Fall eine blöde Voreinstellung, das finde ich auch.

Ich bin natürlich ein Verfechter sauberer Programmierung, alles andere macht ja keinen Sinn, genau so wie Magic Quotes statt prepared Statements zu nutzen... Aber gut, dann schaue ich bei neuen Installationen nun immer direkt mal da nach und passe es an.
 
Vlt. liegt es ja auch an dem neuen Xampp-Paket, da es eh nur für die Entwicklung ist.

Nein, an XAMPP liegt es nicht.
Es ist eine generell empfohlene Einstellung für Production und Development. Siehe:
https://github.com/php/php-src

output_buffering ist auch nicht schlecht - im Gegenteil - es sorgt für ein "besseres" Laden der Seite.
Nur wenn man es als Workaround wegen dem header-Problem einsetzt, ist es "schlecht".

Aber gut, dann schaue ich bei neuen Installationen nun immer direkt mal da nach und passe es an.

Ich würde es auf jeden Fall aktiviert lassen im Production Environment.
 
Zurück
Oben