Kai: Header wird nicht richtig übergeben

Ich scripte zur Zeit an einer Site bei der ich sehr viel mit der Header-Funktion arbeite. Das war bisher auch alles gut und schön, so lange ich das auf dem Firmenrechner gemacht habe. Jetzt wollte ich das Script bei mir zu Hause laufen lassen, aber die Site läuft dann in einen Timeout. Ich vermute, dass der Header nicht richtig übergeben wird, denn wenn ich den Header-Verweis als URL in der Adresszeile eintrage macht das Script das was es soll.

Ich weiß jetzt nicht wo ich suchen muss. Liegt das an den Servereinstellungen (config) oder muss ich in der php.ini suchen, bzw. liegt das Problem an ganz anderer Stelle? Über Hinweise würde ich mich freuen.

Viele Grüße

Kai

  1. hi,

    Ich scripte zur Zeit an einer Site bei der ich sehr viel mit der Header-Funktion arbeite. [...] Jetzt wollte ich das Script bei mir zu Hause laufen lassen, aber die Site läuft dann in einen Timeout.

    du willst also mit dem header-befehl auf einen andere seite weiterleiten.
    hast du die funktion denn korrekt eingesetzt?

    header("Location: http://domain.test/seite.php");

    beachte die anmerkung im manual,
    "Anmerkung: HTTP/1.1 verlangt einen absoluten URI inkl. dem Schema, Hostnamen und absoluten Pfad als Argument von Location."

    gruss,
    wahsaga

    1. Hallo,

      und sollte jetzt das Argument kommen, aber es klappte doch in der Firma auch... Das mag gut sein, dann hast du da Glück gehabt. Es funktioniert halt nicht immer und schon gar nicht mit jedem Browser. Daher, befolge das, was wahsaga geschrieben hat. Es wird immer ein absoluter Pfad gebraucht.

      Schönen Gruß aus München

      die knappschaft

      --

      sh:(  fo:|  ch:?  rl:°  br:$,<,>  n4:&  ie:|  mo:|  va:)  de:]  zu:)  fl:|  ss:|  ls:[,#
      1. hallo Sascha,

        und sollte jetzt das Argument kommen, aber es klappte doch in der Firma auch... Das mag gut sein, dann hast du da Glück gehabt.

        Nicht unbedingt. Sondern wahrscheinlich eine "andere Umgebung"  -  andere Serverversion, andere PHP-Version.

        Es funktioniert halt nicht immer und schon gar nicht mit jedem Browser.

        Nach dem, was bisher an Information da ist, hängt es aller Wahrscheinlichkeit nach nicht am Browser. PHP ist eine serverseitige Technologie, was damit ausgeliefert wird, interessiert eventuell noch den Server, aber nicht den Client (Browser), der es lediglich darstellen können muß.

        Es wird wohl eher so sein, daß Kai zuhause eine andere Server/PHP-Kombination fährt als in der Firma. Und ein "Timeout"  -  wenns denn wirklich ein von PHP ausgelöster ist  -  müßte eigentlich vom Script vorgegeben worden sein.

        Grüße aus Berlin

        Christoph S.

        1. Hallo Christoph,

          hast natürlich Recht. War etwas übereifrig ;-) Kommt vielleicht daher, dass ich nicht so oft die Möglichkeit habe, hier meinen Senf dazuzugeben.

          Schönen Gruß aus München

          die knappschaft

          --

          sh:(  fo:|  ch:?  rl:°  br:$,<,>  n4:&  ie:|  mo:|  va:)  de:]  zu:)  fl:|  ss:|  ls:[,#
        2. hi,

          Es funktioniert halt nicht immer und schon gar nicht mit jedem Browser.
          Nach dem, was bisher an Information da ist, hängt es aller Wahrscheinlichkeit nach nicht am Browser. PHP ist eine serverseitige Technologie, was damit ausgeliefert wird, interessiert eventuell noch den Server, aber nicht den Client (Browser), der es lediglich darstellen können muß.

          in diesem speziellen falle wohl nicht ganz richtig, vielleicht hätte ich den letzten teil des satzes aus dem manual auch noch zitieren sollen:
          "Anmerkung: HTTP/1.1 verlangt einen absoluten URI inkl. dem Schema, Hostnamen und absoluten Pfad als Argument von Location:, aber manche Clients akzeptieren auch relative URIs."

          wenn du mit php einen location-header ausführtst, passiert ja folgendes:
          es wird eine antwort an den client geschickt, die diesen wiederum auffordert, die darin angegebenene ressource vom server anzufordern.

          deshalb kann es schon sein, dass hier verschiedene clients auch unterschiedlich reagieren, wenn sie nur einen dateinamen o.ä. und keine vollständigen URI geliefert bekommen.

          gruss,
          wahsaga

    2. Vielen Dank für die Antworten.

      Dass die Versionen von Server und PHP anders sind, glaube ich schon. Ich versuche mal näher zu beschreiben.

      header ("Location: ".$param_root_dir."admin.php?action=user_administration".$success_message."");

      So sieht das bei mir mit der Header-Funktion aus. $param_root_dir kommt aus einem Parameter-File und $success_message bekomme ich als Returnwert aus einer Funktion und so stricke ich mir die URL zusammen. Aber wenn ich das, was ihr schreibt, richtig interpretiere, geht das wohl nicht überall so.

      Warum ich denke, dass es am Header liegt.... Wenn ich unmittelbar vor dem Header noch eine Ausgabe habe, dann bekomme ich dazu noch eine entsprechende Fehlermeldung, dass dann kein Header mehr ausgeführt werden kann (ist ja auch richtig so), folglich ist der Server noch da. Wenn ich die URL, die im Header stehen sollte, einfach in die Adresszeile schreibe, kommt auch das was mit Header kommen sollte. Wenn ich das Script bis zum Header laufen lasse, kommt's zum Timeout.

      1. Vergesst es einfach, ich bin soooo doof. Natürlich muss ich auch den Host in der Parameter.inc ändern, damit das Script zu Hause läuft. Sorry, für den dämlichen Beitrag, aber da bin ich gestern Abend nicht drauf gekommen. Ich danke euch trotzdem.