Weiterleitung funktioniert wegen Include nicht?
AndreD
- php
Hallo zusammen,
ich habe hier ein seltsames Problem das in dieser Form bei mir noch nie aufgetreten ist. Ich binde eine config.php über include_once so ein:
include_once( $_SERVER["DOCUMENT_ROOT"] . "/php/config.php" );
In dieser werden wiederum Klassen, Funktionen per include_once eingebunden sowie Konstanten definiert. Das hat bisher auch alles soweit funktioniert:
include_once( $_SERVER["DOCUMENT_ROOT"] . "/php/class_dbconnect.php" );
include_once( $_SERVER["DOCUMENT_ROOT"] . "/php/functions.php" );
.
.
.
define( "C_IMAGE_DIR", "images/" );
define( "C_ADMIN_DIR", "admin/" );
define( "C_FILES_DIR", "files/" );
.
.
. usw...
Wenn ich nun aber in einer Datei eine Weiterleitung per
header( "Location: " . C_ADMIN_PATH . "stundenplan.php?filename=" . $filename . "&send=1" );
die();
ausführen möchte bekomme ich die bekannte Fehlermeldung:
"Warning: Cannot modify header information - headers already sent by (output started at g:\www\tanzundgymnastik\php\config.php:177) in g:\www\tanzundgymnastik\admin\stundenplan_edit.php on line 159"
Auf Zeile 159 ist natürlich der header(), in der config.php wird keine Ausgabe vorgenommen, im Scourcecode der erzeugten Datei steht ausser der Fehlermeldung auch nichts drin!
Wenn ich nun die config.php direkt in die Datei anstatt dem include_once reinsetze funktioniert alles, d.h. der header() wird ausgeführt?
Ich habe schon alternativ zum include_once() auch require_once(), require() und include() getestet, hat wie erwartet auch nix gebracht.
Ich dachte mir das ich evt. meinen lokalen Server falsch konfiguriert habe und hab das ganze auf einen Liveserver gestellt, da ging es auch nur wenn ich die config-Datei direkt reingeschrieben habe...
Habe im Moment kein Schimmer was da nicht passt, bei anderen Projekten habe ich das auch schon so ohne Probleme erledigt?
Vielleicht fällt noch jemand von Euch was dazu ein?
Danke & Gruss AndreD
Hallo,
einfache Ursache, große Wirkung:
Dein Script oder Deine include-Datei enthalten bereits Ausgabeanweisungen. Das passiert immer dann ganz gerne, wenn man vor dem <?php oder hinter dem ?> noch irgendwelche Zeichen stehen hat. Leider sind Leerzeilen und Spaces bei manchen Editoren unsichtbar.
Da gab's die letzten Tage schon einen Thread.
Grüße
Tom
Huhu AndreD
"Warning: Cannot modify header information - headers already sent by (output started at g:\www\tanzundgymnastik\php\config.php:177) in g:\www\tanzundgymnastik\admin\stundenplan_edit.php on line 159"
in der config.php wird keine Ausgabe vorgenommen
der Parser sieht das aber anders, die Fehlermeldung sagt es doch deutlich
(output started at g:\www\tanzundgymnastik\php\config.php:177)
also nochmal gründlich durchsehen, beachte das auch kein "white space" ausserhalb der "<?php" und "?>"-Tags stehen darf.
Viele Grüße
lulu
Hallo lulu & Tom,
Lecks am A....! Da hab ich doch tatsächlich ein paar Leerzeilen nach dem ?> in der config.php gehabt! Das auch Leerzeichen gewertet werden war bekannt, allerdings habe ich nur in der Datei in welcher der header() ausgeführt wird darauf geachtet, nicht in den included Files. In Zukunft werde ich auch auf diese Files mehr achten. Böse Falle das, danke für Eure schnelle Hilfe!
Gruss AndreD