Header werden nicht gesendet
Hopsel
- php
Hi alle!
Ich habe auf der Seite http://web.inf.tu-dresden.de/~s2976169/dps/temp.php folgenden Testcode:
<?php
header("Location: http://web.inf.tu-dresden.de/~s2976169/dps/index.php");
echo "huhu";
?>
Der Header wird allerdings nicht gesendet. [1]
Mach ich etwas falsch oder ist PHP so konfiguriert?
[1] Zumindest gehe ich davon aus, da ich nicht auf die angegebene Seite gelange.
MfG H☼psel
Hi,
Der Header wird allerdings nicht gesendet. [1]
nein, statt dessen stehen dort die Bytes EF BB BF. Kannst Du einen Grund dafür erkennen? Alternativ: Kannst Du die PHP-Datei unausgeführt verfügbar machen, sprich: die Ausführung verhindern?
Cheatah
Hi Cheatah!
Der Header wird allerdings nicht gesendet. [1]
nein, statt dessen stehen dort die Bytes EF BB BF.
Wo und wie kann man solche Dinge erfahren?
Kannst Du einen Grund dafür erkennen?
Ich bin überfragt.
Alternativ: Kannst Du die PHP-Datei unausgeführt verfügbar machen, sprich: die Ausführung verhindern?
MfG H☼psel
Hi,
Wo und wie kann man solche Dinge erfahren?
man schreibt sich einen Client, der (hinreichend) beliebige Requests ausführen und den Response auf geeignete Art ausgeben kann.
Alternativ: Kannst Du die PHP-Datei unausgeführt verfügbar machen, sprich: die Ausführung verhindern?
Selbstverfreilich.
Die besagten Bytes befinden sich auch dort am Anfang. Sie stellen die erste Ausgabe dar, senden also den Header ab, verhindern somit das Erzeugen neuer Header, und die Fehlermeldung fällt wegen irgend einer PHP-Einstellung flach. Womit hast Du die Datei erstellt, übertragen und/oder sonstwie verändert?
Cheatah
Hallo Cheatah.
[...] und die Fehlermeldung fällt wegen irgend einer PHP-Einstellung flach.
Stimmt, diese erfolgt ja (normalerweise) auch ohne error_reporting.
Einen schönen Mittwoch noch.
Gruß, Ashura
Hi Cheatah!
Die besagten Bytes befinden sich auch dort am Anfang.
Wieso? :) Ich verstehe das nicht.
Sie stellen die erste Ausgabe dar, senden also den Header ab, verhindern somit das Erzeugen neuer Header, und die Fehlermeldung fällt wegen irgend einer PHP-Einstellung flach.
Nunja. Stelle ich error_reporting auf E_ALL, so wird mir natürlich eine Fehlermeldung angezeigt. Die sagt mir aber auch nur, dass die Header schon gesendet wurden.
Das Problem tritt übrigens nur auf, wenn ich die Dateien im UTF-8-Format kodiere. ANSI-kodierte Dateien werden korrekt angezeigt.
Womit hast Du die Datei erstellt, übertragen und/oder sonstwie verändert?
Mit SciTE Version 1.66 erstellt und mit WinSCP übertragen.
MfG H☼psel
Hi,
Die besagten Bytes befinden sich auch dort am Anfang.
Wieso? :) Ich verstehe das nicht.
siehe Ashuras Posting. Er hatte die selbe Vermutung wie ich - und offenbar auch wie Du:
Das Problem tritt übrigens nur auf, wenn ich die Dateien im UTF-8-Format kodiere. ANSI-kodierte Dateien werden korrekt angezeigt.
There we go :-) Die Lösung dürfte damit fast klar sein.
Cheatah
Hi Cheatah!
There we go :-) Die Lösung dürfte damit fast klar sein.
Ähem. Nein. :)
Ich könnte die Dateien in einem anderen Format abspeichern?
Wie kann ich verhindern, dass ein Byte Order Mark gesetzt wird?
MfG H☼psel
Hi,
There we go :-) Die Lösung dürfte damit fast klar sein.
Ähem. Nein. :)
wetten? ;-)
Ich könnte die Dateien in einem anderen Format abspeichern?
Wie kann ich verhindern, dass ein Byte Order Mark gesetzt wird?
Indem Du die Dateien in einem Format speichert, welches kein BOM benötigt.
Die Alternative (also der Grund für das Wort "fast") wäre übrigens, dem Zielsystem eine korrekte Erkennung des Formates beizubringen. Ich bin mir aber nicht sicher, ob ich Dir dabei assistieren kann.
Cheatah
Hi Cheatah!
There we go :-) Die Lösung dürfte damit fast klar sein.
Ähem. Nein. :)
wetten? ;-)
Mit dir doch nicht. :)
Die Alternative (also der Grund für das Wort "fast") wäre übrigens, dem Zielsystem eine korrekte Erkennung des Formates beizubringen. Ich bin mir aber nicht sicher, ob ich Dir dabei assistieren kann.
Ist mit dem Zielsystem der Webserver gemeint, auf dem die Dateien liegen?
MfG H☼psel
Hi,
wetten? ;-)
Mit dir doch nicht. :)
*g*
Ist mit dem Zielsystem der Webserver gemeint, auf dem die Dateien liegen?
Entweder die Server-Software, oder bereits das Filesystem. Aber wie gesagt: Diese Möglichkeit kann ich auch nur theoretisch in Erwägung ziehen, einen Ansatz kann ich nicht liefern. Ein anderes Format zu wählen halte ich für den intuitiveren (und vermutlich auch einfacheren) Weg.
Cheatah
echo $begrüßung;
Wie kann ich verhindern, dass ein Byte Order Mark gesetzt wird?
Indem Du die Dateien in einem Format speichert, welches kein BOM benötigt.
UTF-8 wäre eins (-: Die BOM wird nicht benötigt, manche Editoren scheinen die aber ohne Einstellmöglichkeiten immer vornanzustellen.
echo "$verabschiedung $name";
Hi
Ich könnte die Dateien in einem anderen Format abspeichern?
Wie kann ich verhindern, dass ein Byte Order Mark gesetzt wird?
Verwende einen Editor der entweder kein UTF-8 kann oder einen der zwischen verschiedenen zeichenkodierungen konvertieren kann.
Vielleicht findest du das ja interessant:
http://juicystudio.com/article/utf-byte-order-mark.php[/link]
[link]http://www.joelonsoftware.com/articles/Unicode.html[/link]
lg bernhard
Hallo Hopsel.
Der Header wird allerdings nicht gesendet. [1]
nein, statt dessen stehen dort die Bytes EF BB BF.Wo und wie kann man solche Dinge erfahren?
Öffne die ausgebene und abgespeicherte Datei einmal in einem Hex-Editor:
EF BB BF 68 75 68 75 0A
Kannst Du einen Grund dafür erkennen?
Ich bin überfragt.
Dein Editor setzt beim UTF-8-kodierten Speichern die BOM.
Alternativ: Kannst Du die PHP-Datei unausgeführt verfügbar machen, sprich: die Ausführung verhindern?
Dort steht die BOM vor dem Header, es erfolgt also eine Ausgabe.
Warum hast du error_reporting(E_ALL); nicht gesetzt?
Einen schönen Mittwoch noch.
Gruß, Ashura