Ankündigung

Einklappen
Keine Ankündigung bisher.

Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Einklappen

Neue Werbung 2019

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

  • Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

    Hallo,

    ich versuche mit XAMPP lokal auf dem Rechner die Bedingungen meines Strato WebHosting-Pakets nachzubilden, um die komplette Homepage vorab offline vollständig zu testen.


    Zunächst die Situation wie es online (bei Strato) ist und wie ich es auch gerne offline (mit XAMPP) hätte:

    Online gibt es zwei Sub-Domains, die in Unterverzeichnisse umgeleitet werden:

    sub1.domain.de => Umleitung nach ./sub1/
    sub2.domain.de => Umleitung nach ./sub2/

    (bezüglich 'meines' Strato-Server-Verzeichnisses /home/strato/http/premium/rid/xxxxxxxxx/htdocs )

    Das funktioniert online so wie es soll (wird ja auch nur einfach durch Klicken bei Strato konfiguriert). Html-Seiten in den beiden Unterverzeichnissen greifen (zum Beispiel bei Bildern) bei Verwendung von "/bild.jpg" jeweils auf das eigene 'Sub-Domain-Unterverzeichnis zu, also Sub1-Domain auf '/home/strato/http/premium/rid/xxxxxxxxx/htdocs/sub1/' und Sub2-Domain auf '/home/strato/http/premium/rid/xxxxxxxxx/htdocs/sub2/' - ganz so wie man es erwartet.

    Ruft man unter den beiden Sub-Domains 'php_info()' auf, so wird jedoch für beide (!) dasselbe PHP-"DOCUMEMENT_ROOT"-Verzeichnis angezeigt, nämlich: /home/strato/http/premium/rid/xxxxxxxxx/htdocs

    Beide Sub-Domains teilen sich also dasselbe PHP-"DOCUMEMENT_ROOT"-Verzeichnis /home/strato/http/premium/rid/xxxxxxxxx/htdocs

    Ob das nun gut oder schlecht ist, weiß ich nicht, ich habe mich damit arrangiert und kann damit leben. Und genau so benötige ich es jetzt nun bei XAMPP/Apache.


    Situation bei XAMPP/Apache:

    Das mit den Sub Domains klappt soweit:

    httpd-vhosts.conf erweitern:

    Code:
    <VirtualHost *:80>
              DocumentRoot "G:/Dokument/homepage/homepage/web-content/sub1"
              ServerName sub1.localhost
    </VirtualHost>
    
    <VirtualHost *:80>
              DocumentRoot "G:/Dokument/homepage/homepage/web-content/sub2"
              ServerName sub2.localhost
    </VirtualHost>
    Drivers/etc/Hosts anpassen, auch erledigt.

    Problem:

    Ruft man nun jedoch offline unter einer der Sub_Domains 'php_info()' auf, so wird als 'DOCUMENT_ROOT' abhängig von der Sub-Domain entweder

    "G:/Dokument/homepage/homepage/web-content/sub1/"

    bzw.

    "G:/Dokument/homepage/homepage/web-content/sub2"

    angegeben, und dieses Verhalten ist unterschiedlich zu Strato:

    PHP-Aufrufe der Form:

    Code:
    require_once $_SERVER['DOCUMENT_ROOT'] . "/php/tools/clsHTMLFrame.php";
    schlagen dann offline natürlich fehl, während sie online wunderbar funktionieren.

    In httpd.conf ist DocumentRoot richtig gesetzt, aber das wird wohl durch die Umleitungen überschrieben!?!

    Code:
    DocumentRoot "G:/Dokument/homepage/homepage/web-content"

    Was kann man hier tun?

    (XAMPP-Version ist 5.6.3)

    Viele Dank!

    Frank


  • #2
    Ich bin nun nicht so der Spezialist, was die richtige Apache-Config angeht. Aber ich glaube dein Verhalten auf dem lokalen System ist korrekt.
    In deiner Config Datei gibst du ja schließlich für jede Subdomain ein anderes DocumentRoot an, so ist es also logisch, dass du auch bei phpinfo() unterschiedliche Ausgaben bekommst.

    Ich glaube das was du suchst wäre <Directory></Directory> innerhalb deines vhosts ?
    Sprich, dass du bei beiden vhosts die gleiche DocumentRoot Einstellung hast, aber eine andere Directory Einstellung (eine Ebene tiefer).

    Ich kann aber auch falsch liegen ...

    also in etwa sowas (es können Einstellungen fehlen ... nicht 1:1 kopieren):
    PHP-Code:
    <VirtualHost *:80>
              
    DocumentRoot "G:/Dokument/homepage/homepage/web-content"
              
    ServerName sub1.localhost
              
    <Directory G:/Dokument/homepage/homepage/web-content/sub1>
                    ...
                    [
    diverse weitere Einstellungen]
              </
    Directory
    </
    VirtualHost>

    <
    VirtualHost *:80>
              
    DocumentRoot "G:/Dokument/homepage/homepage/web-content"
              
    <Directory G:/Dokument/homepage/homepage/web-content/sub2>
                    ...
                    [
    diverse weitere Einstellungen]
              </
    Directory
              
    ServerName sub2.localhost
    </VirtualHost

    Kommentar


    • #3
      Man sollte so wenig require_once in seinem Code haben wie es nur geht. Nutze relative pfade und nicht DOCUMENT_ROOT und einen vernüftigen Autoloader dann gibt es keine Probleme
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

      Kommentar

      Lädt...
      X