Daniel: Header already sent...?!

Hallo zusammen

Ich habe auf WAMP eine Passwortaufforderung geschrieben gemäss http://www.php.net/manual/en/features.http-auth.php

Das Script beginnt in der zweiten Linie des Dokuments. Leider erscheint dann immer die Fehlermeldung "Header already sent by..."

Wenn ich bereits in der ersten Zeile des Dokuments mit dem Script beginne kommt sogar der "Internal Server Error".

Was ist da los?

Hoffentlich kann mir jemand helfen, Danke im Voraus.

Gruss Daniel

  1. Das Script beginnt in der zweiten Linie des Dokuments. Leider erscheint dann immer die Fehlermeldung "Header already sent by..."

    Das passiert, wenn du bereits eine Ausgabe machst (echo(), white-space, usw)
    Einfach header() vor jegliche Ausgabe setzen...

    Wenn ich bereits in der ersten Zeile des Dokuments mit dem Script beginne kommt sogar der "Internal Server Error".

    Das ist eine Warnmeldung, die besagt das dein Script die Rechte des Servers verletzt (glaube ich zumindest)

    Gruss David

    1. "Internal Server Error".
      Das ist eine Warnmeldung, die besagt das dein Script die Rechte des Servers verletzt (glaube ich zumindest)

      Nein. Diese Fehlermeldung ist (wie alle HTTP-Antwortcodes im Hunderter-Bereich) lediglich eine Meldung, die nur dann kommt, wenn für den aufgetretenen Fehler kein spezieller Fehlercode vorgesehen ist. Anders ausgedrückt: Es kann alles mögliche vorgefallen sein.

      Die tatsächliche Ursache steht im Fehlerprotokoll.

      Gruß,
        soenk.e

  2. Das Script beginnt in der zweiten Linie des Dokuments. Leider erscheint dann immer die Fehlermeldung "Header already sent by..."

    Eine Antwort gemäß HTTP-Protokoll besteht aus zwei Teilen, dem Kopf gefolgt vom Datenteil. In letzterem reist die eigentliche Seite (oder das Bild oder was auch immer), im Kopf Zusatzinfos dazu (Datentyp, Änderungszeit und vieles mehr).

    Wenn Du mit dem Versenden des Datenteils beginnst, muß der Kopf bereits durch die Leitung gerauscht sein (denn er kommt ja vor den Daten). Aus diesem Grund kannst Du header() (zum Einfügen von Kopfzeilen) nicht mehr benutzen, sobald Du mit den Daten angefangen hast.

    Zum Datenteil gehört jedes einzelne Byte (inklusive Leerzeichen und Zeilenschaltungen und sonstigem "unsichtbarem" Kram), das in Deiner Skriptdatei _vor_ der Markierung <?php steht. Entferne diese.

    Wenn ich bereits in der ersten Zeile des Dokuments mit dem Script beginne kommt sogar der "Internal Server Error".

    Dieser "interne Serverfehler" kann sehr viele Ursachen haben, welche genau steht in Deinem Fehlerprotokoll (Apache: eine Datei namens error_log).
    Ich rate mal, daß es entweder daran liegt, daß Du PHP als CGI falsch benutzt oder das Deine header()-Anweisung fehlerhaft ist.

    Gruß,
      soenk.e