Weiterleitung unter Linux
Sebastian
- php
0 Marc Reichelt0 Henryk Plötz1 qua
Hi...
...ich hatte bis vor kurzen meinen Webserver auf einem Windows 2003 Server laufen. Dort konnte ich HTTP-Requests auch mitten im Dokomunet ausführen.
Z.B.:
<?php
[Code]
if($123 == "") {
header(Location: index.php); //Man soll zwar den absoluten Pfad angeben, aber ich kenne keine andere Art um die weiterleitung zu realisieren
}
else {
header(Location: fehler.php);
}
[Code]
?>
Nun habe ich meinen Server auf Linux umgestellt, doch bekomme ich jetzt, bei den Seiten die vorher funktionierten, die Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /webserver/bla/bla.php:3) in /webserver/vd/auswertung/login.php on line 37
Gibt es eine Möglichkeit, die Seite wie bei Windows auszuführen und die Weiterleitung in gang zu bekommen.
Oder gibt es vielleicht eine bessere Möglichkeit die Weiterleitung zu realisieren?
Ich bedanke mich für eure Hilfe.
Grüße
Sebastian
Hallo Sebastian,
...ich hatte bis vor kurzen meinen Webserver auf einem Windows 2003 Server laufen. Dort konnte ich HTTP-Requests auch mitten im Dokomunet ausführen.
Z.B.:
<?php
[Code]
if($123 == "") {
header(Location: index.php); //Man soll zwar den absoluten Pfad angeben, aber ich kenne keine andere Art um die weiterleitung zu realisieren
}
else {
header(Location: fehler.php);
}[Code]
?>
Nun habe ich meinen Server auf Linux umgestellt, doch bekomme ich jetzt, bei den Seiten die vorher funktionierten, die Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /webserver/bla/bla.php:3) in /webserver/vd/auswertung/login.php on line 37
Gibt es eine Möglichkeit, die Seite wie bei Windows auszuführen und die Weiterleitung in gang zu bekommen.
Wenn PHP diesen Fehler ausgibt, war dein Fehler schon immer da - der Windows Server hat ihn nur ignoriert.
Du gibst wohl irgendwo vorher schon eine Ausgabe raus, die header müssen gesendet werden _bevor_ irgendwelche Ausgaben rausgehen.
Außerdem:
$123 = [...] (bist du dir sicher dass Zahlen zu Beginn von Variablen richtig sind?)
header(Location: index.php); (fehlen da nicht ein paar Anführungszeichen? Außerdem _muss_ der absolute Pfad angegeben werden, du kannst ihn ja dynamisch via PHP herausfinden lassen)
Bis dann!
Marc Reichelt || http://www.marcreichelt.de/
$123 = [...] (bist du dir sicher dass Zahlen zu Beginn von Variablen richtig sind?)
Die Zahlen waren nur als Platzhalten gedacht.
header(Location: index.php); (fehlen da nicht ein paar Anführungszeichen? Außerdem _muss_ der absolute Pfad angegeben werden, du kannst ihn ja dynamisch via PHP herausfinden lassen)
Ja stimmt müsste heißen header("Location: index.php");
Ja, normalerweiße müsste es ein absoluter Pfad sein, aber unter Windows und mit xampp hat er die Seite trozdem angezeigt, gleich ob davor noch code kam.
Unter Linux zeigt er sie nun aber gar nicht mehr an.
Grüße
Sebastian
Hallo Sebastian.
Ja stimmt müsste heißen header("Location: index.php");
Nein, es müsste heißen: header("Location: http://deine-domain.tld/index.php");
Kleiner Tipp: Wirf mal einen Blick in deine phpinfo()-Datei, dort findest du, was du benutzen kannst.
Gruß, Ashura
Moin,
...ich hatte bis vor kurzen meinen Webserver auf einem Windows 2003 Server laufen. Dort konnte ich HTTP-Requests auch mitten im Dokomunet ausführen.
Vermutlich war http://de.php.net/manual/en/ref.outcontrol.php#ini.output-buffering aktiviert.
Hi,
Warning: Cannot modify header information - headers already sent by (output started at /webserver/bla/bla.php:3) in /webserver/vd/auswertung/login.php on line 37
neben den schon erwähnten Fehlern mit absoluten Pfadangaben:
Ich hatte neulig das gleiche Problem, dass ich eine php(Windows)-Datei zu Linux konvertieren musste und hab selbiges Problem erhalten. Beseitigen der DOS-Zeilenumbrüche und der Leerzeile, die unter dem "?>" bzw "</html>" (also letzte Zeile) stand, haben bei mir geholfen.
mfg q