Suse: Domainnamen in PHP auf lokalem Rechner ermitteln

Hallo,

ich versuche den Domain unter PHP zu ermitteln mit $_SERVER['SERVER_NAME'] funktioniert das auf einem Server gut.

Um lokal testen zu können, habe ich die hosts Datei um 127.0.0.1 www.testdomain.test erweitert

$_SERVER['SERVER_NAME'] liefert mit jetzt 127.0.0.1

Was kann ich tun um www.testdomain.test zu ermitteln?

akzeptierte Antworten

  1. Hallo und guten Saunasamstag,

    ich versuche den Domain unter PHP zu ermitteln mit $_SERVER['SERVER_NAME'] funktioniert das auf einem Server gut.

    Dann hostet der Server nur eine Domain?

    Bei PHP findest Du den Domainnamen eher unter $_SERVER['HTTP_HOST'].

    Ist zwar eigentlich auch keine richtige™ Namensvergabe, trifft aber das, was Du suchst.

    Grüße
    TS

    1. ich versuche den Domain unter PHP zu ermitteln mit $_SERVER['SERVER_NAME'] funktioniert das auf einem Server gut. Dann hostet der Server nur eine Domain?

      Nein, mehrere

      Bei PHP findest Du den Domainnamen eher unter $_SERVER['HTTP_HOST'].

      Danke, das klappt,

      bekomme ich den Domainnamen auch ohne Port, oder muss ich den "von Hand" extrahieren?

      1. Hallo und guten Saunanachmittag,

        ich versuche den Domain unter PHP zu ermitteln mit $_SERVER['SERVER_NAME'] funktioniert das auf einem Server gut. Dann hostet der Server nur eine Domain?

        Nein, mehrere

        Bei PHP findest Du den Domainnamen eher unter $_SERVER['HTTP_HOST'].

        Danke, das klappt,

        bekomme ich den Domainnamen auch ohne Port, oder muss ich den "von Hand" extrahieren?

        Ich weiß nicht, was dein Provider da gemacht hat. Welchen hast Du?

        Du könntest $_SERVER['HTTP_HOST'] nochmal durch parse_url() jagen.

        Grüße
        TS

        1. ich versuche den Domain unter PHP zu ermitteln mit $_SERVER['SERVER_NAME'] funktioniert das auf einem Server gut. Bei PHP findest Du den Domainnamen eher unter $_SERVER['HTTP_HOST'].

          Was ist denn der Unterschied zwischen $_SERVER['SERVER_NAME'] und $_SERVER['HTTP_HOST']

          Aus meinem Server (Hetzer) bekomme ich bei beiden die Domain. Lokal nur bei $_SERVER['HTTP_HOST'] bei $_SERVER['SERVER_NAME'] die IP Adresse (auf die in der host Datei umgelenkt wurde)

          1. Hallo und guten Saunanachmittag,

            Was ist denn der Unterschied zwischen $_SERVER['SERVER_NAME'] und $_SERVER['HTTP_HOST']

            Aus meinem Server (Hetzer) bekomme ich bei beiden die Domain. Lokal nur bei $_SERVER['HTTP_HOST'] bei $_SERVER['SERVER_NAME'] die IP Adresse (auf die in der host Datei umgelenkt wurde)

            Die Hierarchie iet eigentlich:

            • MASCHINE, der Professor in der Blechkiste (oder ein virtueller Teil davon), der für deine Prozesse zuständig ist
            • SERVER (je ein Name für HTTP, für MySQL, für SSH, usw., eignetlich ein realer Server)
            • HTTP_HOST, der HTTP-Server-Prozess, der für deine HTTP-Requests zuständig ist. Das kann auch ein virtueller Server sein, also nur ein Worker für den SERVER.

            usw.

            Die Provider können die meisten Systemvariablen mit eigenen Werten überschreiben und tun dies auch meistens, manchmal dann eben auch mit Unsinn.

            Grüße
            TS

            1. Hallo und guten Saunanachmittag,

              Was ist denn der Unterschied zwischen $_SERVER['SERVER_NAME'] und $_SERVER['HTTP_HOST']

              Aus meinem Server (Hetzer) bekomme ich bei beiden die Domain. Lokal nur bei $_SERVER['HTTP_HOST'] bei $_SERVER['SERVER_NAME'] die IP Adresse (auf die in der host Datei umgelenkt wurde)

              Die Hierarchie iet eigentlich:

              • MASCHINE, der Professor in der Blechkiste (oder ein virtueller Teil davon), der für deine Prozesse zuständig ist
              • SERVER (je ein Name für HTTP, für MySQL, für SSH, usw., eignetlich ein realer Server)
              • HTTP_HOST, der HTTP-Server-Prozess, der für deine HTTP-Requests zuständig ist. Das kann auch ein virtueller Server sein, also nur ein Worker für den SERVER.

              usw.

              Die Provider können die meisten Systemvariablen mit eigenen Werten überschreiben und tun dies auch meistens, manchmal dann eben auch mit Unsinn.

              Danke!

            2. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

              Was ist denn der Unterschied zwischen $_SERVER['SERVER_NAME'] und $_SERVER['HTTP_HOST']

              Aus meinem Server (Hetzer) bekomme ich bei beiden die Domain. Lokal nur bei $_SERVER['HTTP_HOST'] bei $_SERVER['SERVER_NAME'] die IP Adresse (auf die in der host Datei umgelenkt wurde)

              Die Hierarchie iet eigentlich:

              • MASCHINE, der Professor in der Blechkiste (oder ein virtueller Teil davon), der für deine Prozesse zuständig ist
              • SERVER (je ein Name für HTTP, für MySQL, für SSH, usw., eignetlich ein realer Server)
              • HTTP_HOST, der HTTP-Server-Prozess, der für deine HTTP-Requests zuständig ist. Das kann auch ein virtueller Server sein, also nur ein Worker für den SERVER.

              usw.

              Das sind aber leider keine stabilen Begriffe, denn ob der Host nun auf der Maschine liegt, oder die Maschinen auf dem Host laufen, das ist wohl das berühmte Henne/Ei-Problem und es spielt ganz doll das Wort "virtuell" mit.

              Die Provider können die meisten Systemvariablen mit eigenen Werten überschreiben und tun dies auch meistens, manchmal dann eben auch mit Unsinn.

              Grüße
              TS

              Spirituelle Grüße
              Euer Robert
              robert.r@online.de

              --
              Möge der wahre Forumsgeist ewig leben!
              1. Hallo

                • MASCHINE, der Professor in der Blechkiste (oder ein virtueller Teil davon), der für deine Prozesse zuständig ist
                • SERVER (je ein Name für HTTP, für MySQL, für SSH, usw., eignetlich ein realer Server)
                • HTTP_HOST, der HTTP-Server-Prozess, der für deine HTTP-Requests zuständig ist. Das kann auch ein virtueller Server sein, also nur ein Worker für den SERVER.

                Das sind aber leider keine stabilen Begriffe, denn ob der Host nun auf der Maschine liegt, oder die Maschinen auf dem Host laufen, das ist wohl das berühmte Henne/Ei-Problem und es spielt ganz doll das Wort "virtuell" mit.

                Aus Sicht von HTTP (und darum geht es hier) gibt es keine virtuellen Maschinen.

                Tschö, Auge

                --
                Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
                Terry Pratchett, „Gevatter Tod“
          2. Tach!

            Was ist denn der Unterschied zwischen $_SERVER['SERVER_NAME'] und $_SERVER['HTTP_HOST']

            HTTP_HOST ergibt sich aus dem Protokoll HTTP. Der CLient schickt mit, welchen Host er ansprechen möchte. Nur so kann man mehrere VHosts unter derselben IP-Adresse betreiben. Der Name wird eigentlich am Client mittels DNS in eine IP-Adresse übersetzt und gar nicht in den unteren Schichten, die für den Verbindungsaufbau zuständig sind, zum Server übertragen. Dort ist er nicht notwendig. Aber der Webserver muss VHosts trotz gleicher IP-Adresse unterscheiden können, und deshalb schickt man den Hostnamen via HTTP doch noch mit.

            SERVER_NAME ist das was der Webserver draus gemacht hat. Ich hätte angenommen, dass das der VHost-Name ist, aber selbst wenn ich einen Namen nebst weiterer Aliase vergebe, stehen die Aliase darin und nicht immer wieder der Name - zumindest bei meinem Apachen.

            Nimm HTTP_HOST, das ist das was der Client wollte.

            dedlfix.

  2. Tach!

    Um lokal testen zu können, habe ich die hosts Datei um
    127.0.0.1 www.testdomain.test
    erweitert

    $_SERVER['SERVER_NAME'] liefert mit jetzt 127.0.0.1

    Was kann ich tun um www.testdomain.test zu ermitteln?

    Eine richtige Apache-Konfiguration könnte helfen. Da steht bestimmt nur ein Default-VHost drin und kein Name dabei.

    dedlfix.

    1. Tach!

      Um lokal testen zu können, habe ich die hosts Datei um
      127.0.0.1 www.testdomain.test
      erweitert

      $_SERVER['SERVER_NAME'] liefert mit jetzt 127.0.0.1

      Was kann ich tun um www.testdomain.test zu ermitteln?

      Eine richtige Apache-Konfiguration könnte helfen. Da steht bestimmt nur ein Default-VHost drin und kein Name dabei.

      dedlfix.

      Ich nutze den in PHPStorm eingebauten Entwicklungsserver