Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Postby hggbr » 28. January 2015 21:08

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: Select all
<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: Select all
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: Select all
DocumentRoot "G:/Dokument/homepage/homepage/web-content"



Was kann man hier tun?

(XAMPP-Version ist 5.6.3)

Viele Dank!

Frank
hggbr
 
Posts: 3
Joined: 28. January 2015 20:28
Operating System: Windows 8.1

Re: Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Postby Nobbie » 28. January 2015 22:08

hggbr wrote: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:



Dann solltest Du bei Strato fragen, warum das da entgegen der Konfiguration so läuft. Bei Dir ist alles richtig, genauso so hast Du die VirtualHosts programmiert und genauso verhalten sie sich. Der Fehler findet (wenn überhaupt) bei Strato statt.


Aber - meine ganz persönliche Empfehlung:

richte Dir einen Linux Rechner ein und dann benutze zu 100%(!) - nicht einmal nur 99% - exakt dieselben Pfade und Werte. Du hast ja schon das offensichtliche Problem, dass Du extrem abweichende Pfadnamen benutzt, so wird die die Umgebung also niemals auch nur annähernd identisch sein. Benutze GENAU dieselben Pfade und Variablen (dafür brauchst Du eben Linux, was aber auch eher ein Vorteil ist, denn das ist das bessere Server Environment) und dann ist es auch viel einfacher, eine exakte lokale Kopie anzulegen.
Nobbie
 
Posts: 8761
Joined: 09. March 2008 13:04

Re: Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Postby hggbr » 29. January 2015 21:38

Hallo,

vielen Dank für die Antwort.

Aber jetzt mal unabhängig davon, wo der "Fehler" liegt: Kann man bei Xampp das Verhalten so ändern, dass für alle Subdomains dasselbe PHP-DOCUMENT_ROOT-Verzeichnis verwendet wird? Bzw.: Kann man die Subdomains ggf. anders anlegen, sodass sich dieses Verhalten ergibt?

Vielen Dank

Frank
hggbr
 
Posts: 3
Joined: 28. January 2015 20:28
Operating System: Windows 8.1

Re: Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Postby Altrea » 30. January 2015 00:36

Hallo,

Ich finde das Verhalten der Stratoserver hier ziemlich intransparent. Ein DOCUMENT_ROOT sollte immer auf das Wurzelverzeichnis der Domain zeigen, unabhängig davon ob es sich um einen virtuellen oder nicht virtuellen host handelt.

Ich kann mir das Verhalten nur so erklären, dass Strato freiwillig oder unfreilillig PHP $_SERVER Variablen verbiegt. Hierzu habe ich folgenden Bug-Report gefunden, der Inkonsistenzen von DOCUMENT_ROOT beschreibt, wenn unter anderem dynamische VirtualDocumentRoot gesetzt werden: https://issues.apache.org/bugzilla/show ... i?id=26052

Du könntest das Verhalten von Strato also simulieren, indem du deine $_SERVER['DOCUMENT_ROOT'] Variable verbiegst. Beispiele dazu findest du in den Kommentaren des Bug Reports. Spätestens wenn deine Projekte sich aber auf solch verbogene Einstellungen verlassen, wirst du auf Probleme stoßen sobald du zu einem Hoster wechselst, der saubere Server Variablen setzt.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 8286
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Postby Nobbie » 30. January 2015 13:00

hggbr wrote:Aber jetzt mal unabhängig davon, wo der "Fehler" liegt: Kann man bei Xampp das Verhalten so ändern, dass für alle Subdomains dasselbe PHP-DOCUMENT_ROOT-Verzeichnis verwendet wird?


Das ist der einfachste Fall überhaupt (ich glaube, "Altrea" sieht hier ausnahmsweise den Wald vor lauter Bäumen nicht): einfach gar keine VirtualHosts konfigurieren, dann verhalten sich alle Domains gleich. Und dann einfach den einen DocumentRoot, den es dann gibt, so setzen wie gewünscht. Dann ist aber auch "localhost" usw. alles das gleiche.
Nobbie
 
Posts: 8761
Joined: 09. March 2008 13:04

Re: Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Postby Altrea » 30. January 2015 16:43

Nobbie wrote:(ich glaube, "Altrea" sieht hier ausnahmsweise den Wald vor lauter Bäumen nicht)

Das mag ich nicht in Abrede stellen :lol:
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 8286
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Postby hggbr » 02. February 2015 19:45

Nobbie wrote:Das ist der einfachste Fall überhaupt (ich glaube, "Altrea" sieht hier ausnahmsweise den Wald vor lauter Bäumen nicht): einfach gar keine VirtualHosts konfigurieren, dann verhalten sich alle Domains gleich. Und dann einfach den einen DocumentRoot, den es dann gibt, so setzen wie gewünscht. Dann ist aber auch "localhost" usw. alles das gleiche.


Hallo,

was bedeutet denn das genau: Kann man Subdomains ohne VirtualHosts einrichten, so wie im Zitat beschrieben? Wie geht das denn?

Gruß

Frank

P.S.: Strato hat sich zur Thematik übrigens geäußert:

Strato wrote:Generell ist es richtig, dass wenn eine Domain/Subdomain auf einen Unterordner umgeleitet ist, dieser im DOCUMENT_ROOT zu finden sein sollte. Auf einer Hosting-Plattform, die auf Hochverfügbarkeit für viele tausend Kunden ausgelegt ist, ist dies jedoch bedauerlicherweise nicht möglich. Die Virtualisierung der Plattform funkt hier dazwischen, sodass eine genauere Anzeige nicht umgesetzt werden kann.
hggbr
 
Posts: 3
Joined: 28. January 2015 20:28
Operating System: Windows 8.1

Re: Unterschiedliches 'PHP DOCUMENT_ROOT' und 'web root' ?

Postby Nobbie » 03. February 2015 12:58

hggbr wrote:
Nobbie wrote:was bedeutet denn das genau: Kann man Subdomains ohne VirtualHosts einrichten, so wie im Zitat beschrieben? Wie geht das denn?


Ja natürlich. Eine Subdomain und ein VirtualHost ist NICHT das gleiche. Eine Subdomain ist zunächst nur ein weiterer Name für die gleiche IP im Internet. Mehr nicht, hat mit Apache noch gar nichts zu tun.

Und VirtualHost kann man (besteht aber kein Zwang) benutzen, wenn sich Subdomains (unter Apache) verschieden verhalten sollen. Wenn alle Subdomains sich gleich verhalten sollen, also einfach nur andere Namen für exakt die gleiche Umgebung sind, dann muss man genau GAR NICHTS in Apache einstellen, das ist der Auslieferungszustand.

Wenn man beispielsweise FTP Server einrichtet, kann man auch Subdomains benutzen, aber das hat mit VirtualHosts nichts mehr zu tun, VirtualHost ist ein rein spezifischer Apache Begriff.

P.S.: Die Antwort von Strato klingt sehr seltsam, ich glaube eigentlich nicht, dass das wirklich so realisiert ist. Ich habe selbst bei 1blu auch eine Web-Umgebung (sicherlich auch geteilt mit tausenden anderen Klienten) und da kann ich sehr wohl für verschiedene Subdomains verschiedene Verzeichnisse als DocumentRoot einrichten (das heißt da nicht "DocumentRoot", das ist ja wieder ein Apache Begriff, sondern "Startverzeichnis" oder "Wurzelverzeichnis"). In jedem Fall kann man da sehr wohl verschiedene Ordner für verschiedene Subdomains angeben. Ich kenne die Admin Umgebung von Strato Webpaketen nicht (ist vielleicht auch eine Frage, welches Paket man hat), aber ich kann mir nicht vorstellen, dass das dort grundsätzlich nicht möglich ist. Es ist nur per Default eben nicht so eingerichtet, das muss man schon selbst explizit angeben, jede Subdomain, die da nicht explizit angegeben wird, bekommt den Standard DocumentRoot von diesem Webpaket zugewiesen.

Es ist nur eben so, dass Subdomains nicht "aus der Luft" daherkommen. Um eine Subdomain überhaupt adressieren zu können, muss in irgendeinem sog. DNS Server (da werden die Domain Namen mit IPs verknüpft) eine entsprechenden Eintrag machen und diese Arbeit muss Strato ggf. noch leisten, bevor man eine bestimmte Subdomain überhaupt ansprechen kann. Manche Provider richten aber Domains von vorneherein so ein, dass sie quasi "Wildcard" Subdomains miteinrichten, d.h. es funktioniert mit allen Subdomain Namen, die einem so einfallen, dass die Subdomain mit der richtigen IP verbunden ist. Aber das ist eben nur eine IP - das hat mit Apache noch nichts zu tun.
Nobbie
 
Posts: 8761
Joined: 09. March 2008 13:04


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 8 guests