Problem mit header()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit header()

    Hallo zusammen

    ich hatte heute (besser gestern) ein Problem mit dem Absetzen eines headers in einem meiner Scripts. Bevor ihr losschreit: Error reporting ist voll aufgedreht, es findet keine Ausgabe vor dem header() statt. Keine Fehlermeldung nix nada...
    Der Aufruf erfolgt im else Teil eines if/else Konstruktes. Wenn ich statt des header Befehls ein die('Hallo') mache, dann wird dieses angezeigt. Ich habe die Header auch mit der FF Ext HeaderMonitor und liveHeaders kontrolliert, es wird kein Location-Header abgesetzt. Pfade habe ich sowohl relativ als auch komplett mit http:// probiert.
    Jemand eine Idee voran man da noch drehen könnte ?

    Danke und Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

  • #2
    Ja Guru Du könntest mal nen Stückchen Code zeigen welches man testen kann ums nachzuvollziehen.
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Tip ins blaue:

      PHP als Modul und nicht als CGI einbinden.

      Kommentar


      • #4
        @phpaule
        läuft bereits als Modul und nicht als CGI
        @hhcm
        Der fragliche Code ist nicht viel. Erst wird ein Form geprüft, wenn alle Felder gesetzt sind und einen gütligen Inhalt haben, wird eine MySql Query zusammengestellt und an die DB geschickt.
        Nach erfolgreichem DB Eintrag wird die mail() Fkt bemüht und dem Kunden eine Kopie seiner Anfrage via Mail zugestellt.
        Der Mailserver ist testweise abgeschaltet, damit die Anfrage nach Mail versendet ein false ergibt (getestet ergibt sie auch).
        Ins else komme ich bestimmt rein, weil ein testweises die() ausgegeben wird. Wie gesagt alle Header Sniffer sagen mit, dass der Location Header nicht abgesetzt wird. Error reporting ist auf E_ALL | E_STRICT
        PHP-Code:
        /*Viel Code vorher, der aber wenn alle Felder ausgefüllt sind keinerlei 
        Ausgabe erzeugt sonst würde error_reporting ja motzen*/
        [...]
        if(
        wenn email versenden erfolgreich){
            
        //tu das
        }else{
            die(
        'Hallo Welt'); //wird angezeigt --> kommt also ins else rein
            
        header('Location: http://127.0.0.1/file.php');
            exit;

        Ist mein Entwicklungslapi drum ist die IP 127.0.0.1 schon korrekt. Habe es aber auch (wie man es ja nicht sollte) nur mit mit dem Dateinamen angegeben (liegen im gleichen Verzeichnis) --> gleiches Ergebnis Header scheint nicht abgesetzt zu werden.

        Danke und Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Du weißt, das die() das Script beendet (genau wie exit)?
          hopka.net!

          Kommentar


          • #6
            Du weißt, das die() das Script beendet (genau wie exit)?
            @Hopka: Ja das weiss ich. Drum ist das die() nur testweise drin um zu sehen ob das Script überhaupt in den else-Zweig hineinkommt. Wenn es aukommentiert ist, dann wird eben der header() nicht gesendet.
            Dass der header() nicht gesendet werden kann wenn davor ein die() steht ist mir schon klar

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              sicher, dass noch keine header gesendet wurden?
              PHP-Code:
              if(headers_sent()) 

              Kommentar


              • #8
                @Max
                Ziemlich sicher, aber werde das morgen früh nach der Arbeit zu Hause mal noch testen.

                Danke und Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  @Max
                  Noch nicht getestet, aber im Manual zu dieser Fkt folgendes gelesen
                  You can't add any more header lines using the header() function once the header block has already been sent. Using this function you can at least prevent getting HTTP header related error messages
                  und da ich keine Fehlermeldungen bezüglich bereits gesendeter Header bekomme gehe ich im Moment noch davon aus, dass keine gesendet wurden.
                  Werde deinen Vorschlag aber noch testen
                  Cheers

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Also auf meinem Testlapi funzt das Script wie gewünscht
                    Habe gerade noch die httpd conf vom Lapi mit dem lokalen Server verglichen. Sehe da keine Unterschiede (mod_header ist bei beiden aktiviert)
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Wie siehts mit der php.ini aus? Besser gesagt Versionen?

                      Check mal display_errors in der ini....
                      gruss Chris

                      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                      Kommentar


                      • #12
                        Beide php Versionen sind 5.1.5 Display_error auf on. Error_reporting ist vollstens aufgedreht. Der einzige Unterschied ist die Apache Version. Funzen tut es auf 2.0.53 und nicht auf 2.0.55.
                        Na dann werde ich wohl die Inst des lokalen Testrechners downgraden auf 2.0.53

                        Danke für Eure Hilfe
                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar

                        Lädt...
                        X