PHP header() wird anscheinend nicht beachtet

Der_Sensemann

Registered User
Hi,
ich wollte mir ein kleines Script basteln, das bei Fehlern die jeweiligen HTTP Statuscodes sendet. In PHP bewerkstelligt man das ja soweit ich herausgefunden hab durch header() allerdings kommt bei meinem Script kein 404 im Browser obwohl er müsste.
PHP:
if($_USER->HasRight($_RIGHTS->GetId($galeriebasename))) 
{
	
}
else
{
	Header('HTTP/1.1 401 Unauthorized'); //wenn ich hier ein echo setz dann wird das auch ausgegeben also liegt es nicht an der if-Abfrage
    exit();
}

Wo genau liegt da mein Fehler ?
 
1. Bei einem gesendeten 401 kann kein 404 kommen.
2. In Abhängigkeit ob Modul oder CGI, Apache oder IIS können andere Header nötig sein

Alternativ mal testen:
PHP:
header('Status: 401');
 
Ja das mit dem 404 im Beitrag und 401 im Code war ein Schreibfehler meinerseits, das bei einem gesendeten 404 kein 401 kommt wusste ich :D.
Allerdings funktioniert weder die Version von Combie, noch die von huschi. :(

Mein System:
Debian Lenny mit Apache/2.2.9 und php5

Browser ist ein Firefox 3.5.5, Wobei auch Tests mit dem IE 8 keinen Erfolg bringen.
 
Was dann wohl an einem Verstoß gegen das "EVA Prinzip" liegt. Und PHP kann dir das nicht sagen, weil du das error_reporting nicht aktiviert hast. Auch prüftst du nicht, ob schon die Header gesendet wurden.
 
Ich hab eine Vermutung...

Vorher sei gefragt: Wie prüfst du denn nach, ob ein 404 Response-Code per Header von PHP gesendet wird?
 
Indem ich die php im Browser einfach aufruf, dann erwarte ich eigentlich eine entsprechende Fehlerseite, sprich 404, 401 oder so. Oder liegt hier mein (Denk)fehler ?
 
War meine Vermutung - ist ein Denkfehler deinerseits.
Die Fehlerseite, die du meinst, ist nur das Fehlerdokument vom Apache, der diese präsentiert, falls die angeforderte Datei nicht gefunden werden kann.

Wenn du selbst mit PHP einen 404'er sendest, bleibt grundsätzlich alles so, wie ohne 404 (da Apache die PHP-Datei offenbar gefunden hat - also seitens des Apache ist die Lage: alles ok -> 200).

Am besten du schaust nach dem Firefox Plugin Firebug und installierst es. Dort siehst du dann, welche Responsecodes die einzelnen Dokumente/Dateien zurückgeben und kannst es damit kontrollieren.
 
Gut dann haben wir ja die Ursache warum es "nicht" funktioniert. Dann muss ich mir wohl ne andere Methode ausdenken, wie ich das mach mit der Fehlermeldung. Trotzdem danke an euch 3.
 
Back
Top