Frage zu cannot sent header
Hallo zusammen,
wo könnte den in der PHP Konfiguration der Unterschied sein, dass ein
Script auf dem lokalen Apache (XAMPP) den Aufruf header(... ausführt
und die Seite aufbaut, auf dem Internetserver aber meldet dass der
Output bereits in Zeile xy gestartet wurde.
Die angegebene Ziel enthält aber keinen output sondern ist das Ende
einer include Datei mit der Definition von Variablen.
also die Zeile
?>
oder die darauf folgenden Leerzeilen.
mit error_reporting(E_ALL);
finde ich dort auch keine Fehler
Viele Grüße Knut
Re: Frage zu cannot sent header
..oO(Knut Krueger)
>wo könnte den in der PHP Konfiguration der Unterschied sein, dass ein
>Script auf dem lokalen Apache (XAMPP) den Aufruf header(... ausführt
>und die Seite aufbaut, auf dem Internetserver aber meldet dass der
>Output bereits in Zeile xy gestartet wurde.
Möglicherweise ist auf der lokalen Maschine output_buffering
eingeschaltet.
>Die angegebene Ziel enthält aber keinen output sondern ist das Ende
>einer include Datei mit der Definition von Variablen.
>also die Zeile
>?>
>
>oder die darauf folgenden Leerzeilen.
>mit error_reporting(E_ALL);
>finde ich dort auch keine Fehler
Auch Leerzeilen sind Output.
Micha
Re: Frage zu cannot sent header
Michael Fesser schrieb:
> Möglicherweise ist auf der lokalen Maschine output_buffering
> eingeschaltet.
Ja das ist loakl an und auf dem Server aus.
Spricht was dagegen das einzuschalten?
>
> Auch Leerzeilen sind Output.
Naja, dann müsste die Zeile der ersten Leerzeile angezeigt werden und
nicht der letzten. Aber ich hatte sie deshalb auch alle gelöscht.
Grüße Knut
Re: Frage zu cannot sent header
..oO(Knut Krueger)
>Michael Fesser schrieb:
>
>> Möglicherweise ist auf der lokalen Maschine output_buffering
>> eingeschaltet.
>Ja das ist loakl an und auf dem Server aus.
>
>Spricht was dagegen das einzuschalten?
Ich würde eher den Code umstricken, so daß grundsätzlich erst die Header
und danach jeglicher Inhalt gesendet werden. Das ist IMHO sauberer und
auch von der Reihenfolge her logischer.
YMMV.
Micha
Re: Frage zu cannot sent header
Michael Fesser schrieb:
> Ich würde eher den Code umstricken, so daß grundsätzlich erst die Header
> und danach jeglicher Inhalt gesendet werden. Das ist IMHO sauberer und
> auch von der Reihenfolge her logischer.
Stimmt das war ein Denkfehler, an dieser Stelle sollte der Header nicht
stehen. Da hat mich die Zeilenangabe auf den völlig falschen Gedanken
gebracht.
GRüße Knut
Re: Frage zu cannot sent header
>> Möglicherweise ist auf der lokalen Maschine output_buffering
>> eingeschaltet.
> Ja das ist loakl an und auf dem Server aus.
>
> Spricht was dagegen das einzuschalten?
Klar. Wenn das Auto eckige Räder hat, fräst man Zacken in die Straße.
Re: Frage zu cannot sent header
Jonas Werres schrieb:
>>> Möglicherweise ist auf der lokalen Maschine output_buffering
>>> eingeschaltet.
>> Ja das ist loakl an und auf dem Server aus.
>>
>> Spricht was dagegen das einzuschalten?
>
> Klar. Wenn das Auto eckige Räder hat, fräst man Zacken in die Straße.
Die Frage war eigentlich was gegen eckige Räder spricht.
Entschuldigung dass ich mich da wohl missverständlich ausgedrückt habe.
Viele Grüße Knut
Re: Frage zu cannot sent header
Jonas Werres schrieb:
>>> Möglicherweise ist auf der lokalen Maschine output_buffering
>>> eingeschaltet.
>> Ja das ist loakl an und auf dem Server aus.
>>
>> Spricht was dagegen das einzuschalten?
>
> Klar. Wenn das Auto eckige Räder hat, fräst man Zacken in die Straße.
Soweit ich weiß, müssten es Halbkreise sein :-)
SCNR, Daniel
Re: Frage zu cannot sent header
Knut Krueger wrote:
> Die angegebene Ziel enthält aber keinen output sondern ist das Ende
> einer include Datei mit der Definition von Variablen.
> also die Zeile
> ?>
>
> oder die darauf folgenden Leerzeilen.
Aus genau diesem Grund lasse ich diese ?>-tags am ende einer PHP-datei
seit einiger Zeit immer weg - php akzeptiert das ohne Fehlermeldung, und
ich kriege keine Newlines und andere Ausgaben die ich nicht haben will.
Michael
Re: Frage zu cannot sent header
Knut Krueger schrieb:
> Die angegebene Ziel enthält aber keinen output sondern ist das Ende
> einer include Datei mit der Definition von Variablen.
> also die Zeile
> ?>
>
> oder die darauf folgenden Leerzeilen.
Einfach mal im Editor alle Zeichen anzeigen. Dort sind bestimmt nicht
druckbare Zeichen wie Leerzeichen, Zeilenumbrüche oder Tabulatoren
enthalten. Diese werden außerhalb von PHP Tags ebenso als Ausgabe
gewertet als druckbare Zeichen. Schliesslich sind da ja Zeichen und
nicht nichts. :)
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Frage zu cannot sent header
Christoph Herrmann schrieb:
> Knut Krueger schrieb:
>> Die angegebene Ziel enthält aber keinen output sondern ist das Ende
>> einer include Datei mit der Definition von Variablen.
>> also die Zeile
>> ?>
>>
>> oder die darauf folgenden Leerzeilen.
>
> Einfach mal im Editor alle Zeichen anzeigen. Dort sind bestimmt nicht
> druckbare Zeichen wie Leerzeichen,
Richtig ein einziges Leerzeichen, nur hatte ich das dort gelassen weil
sonst der Editor den Tag nicht ?> Tag nicht erkennt, sprich nicht farbig
markiert, also dachte ich es muss dort sein.
Viele GRüße Knut
Re: Frage zu cannot sent header
Christoph Herrmann schrieb:
> Knut Krueger schrieb:
>> Die angegebene Ziel enthält aber keinen output sondern ist das Ende
>> einer include Datei mit der Definition von Variablen.
>> also die Zeile
>> ?>
>>
>> oder die darauf folgenden Leerzeilen.
>
> Einfach mal im Editor alle Zeichen anzeigen. Dort sind bestimmt nicht
> druckbare Zeichen wie Leerzeichen,
Richtig ein einziges Leerzeichen, nur hatte ich das dort gelassen weil
sonst der Editor den Tag nicht ?> Tag nicht erkennt, sprich nicht farbig
markiert, also dachte ich es muss dort sein.
Aber trotzdem ist es seltsam.
bei
101 ?>leerzeichen
102 leerzeile
103 leerzeile
104 leerzeile
105 leerzeile
106 leerzeile
107 leerzeile
kommt die Meldung: Output startet at line 107
Warum dann nicht bei 101?
Viele GRüße Knut
Re: Frage zu cannot sent header
Michael Fesser schrieb:
> Ich würde eher den Code umstricken, so daß grundsätzlich erst die Header
> und danach jeglicher Inhalt gesendet werden. Das ist IMHO sauberer und
> auch von der Reihenfolge her logischer.
Eigentlich dreht es sich nur um den Logout.
Rufe ich Logout auf wird die Session geschlossen.
Und z.B. die Info ob der User Deutsch oder Englisch benutzt hat ist weg.
Um die Ausgabe neu aufzubauen muss ich einen Header wahlweise für
Deutsch oder Englisch senden, aber nachdem ja schon was ausgegeben wurde
habe in diesem Fall das Problem des Output_Buffering.
Ist das sauber wenn ich nur für diesen einen Fall am Anfang ein
ob_start () setze? und Output_buffering generell ausgeschaltet lasse?
Oder wo habe ich da den Knopf im Hirn?
Grüße Knut
Re: Frage zu cannot sent header
..oO(Knut Krueger)
>Michael Fesser schrieb:
>
>> Ich würde eher den Code umstricken, so daß grundsätzlich erst die Header
>> und danach jeglicher Inhalt gesendet werden. Das ist IMHO sauberer und
>> auch von der Reihenfolge her logischer.
>
>Eigentlich dreht es sich nur um den Logout.
>Rufe ich Logout auf wird die Session geschlossen.
>Und z.B. die Info ob der User Deutsch oder Englisch benutzt hat ist weg.
Soweit klar.
>Um die Ausgabe neu aufzubauen muss ich einen Header wahlweise für
>Deutsch oder Englisch senden, aber nachdem ja schon was ausgegeben wurde
>habe in diesem Fall das Problem des Output_Buffering.
Was für einen Header sendest Du und warum kannst Du den nicht vor allem
anderen senden? Was wurde denn zu diesem Zeitpunkt bereits ausgegeben?
>Ist das sauber wenn ich nur für diesen einen Fall am Anfang ein
>ob_start () setze? und Output_buffering generell ausgeschaltet lasse?
Ich sähe es eher als Notlösung.
>Oder wo habe ich da den Knopf im Hirn?
Mir scheint der logische Ablauf in Deinem Script noch nicht ganz
astrein. Es ist praktisch immer möglich, zuerst die benötigten Header
und danach die eigentliche Ausgabe zu senden.
Micha