Document_Root und virtuelller Host vHost.

Yves

Benutzer
Mitglied seit
03. Jan 2014
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen

Meine letzte Frage wurde nicht beantwortet, wahrscheinlich war ich zu unklar (muss mich selber auch noch in das Thema reinbeissen, bin nur Hobbyprogrammierer). Ich versuche es etwas präziser und kürzer.

Ich habe auf meinem Synology NAS DS716j auf der WebStation einen virtuellen Host ("Webseite") eingerichtet mit einer dazugehörigen Script-Spracheinstellung mit PHP-8.
Die Konfiguration des vHosts zeigt mir, dass das Document_Root auf web/Webseite zeigt.

Wenn ich nun im Browser (http://192.168.1.22/Webseite/ ) meine Webseite aufrufe, und $_Server["DOCUMENT_ROOT"] abfrage, erhalte ich folgendes Resultat:
"/var/services/web"

Was muss ich machen, dass das Document Root auf "/var/services/web/Webseite zeigt (resp auf mein root /Webseite) ?

Grund ist, dass ich für für Include/require absolute Pfade möchte, damit zB dieser Include funktioniert.
<?php include $_SERVER["DOCUMENT_ROOT"] . '/phpadds/header.php'; ?>
Failed opening '/var/services/web/phpadds/head.php'

Meine Webseite ist auf einem Hoster und es wäre gut, wenn ich das gleiche Include auf dem NAS und auf dem Hoster benutzen könnte. Der Include Befehl funktioniert auf dem Hoster.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Bei de Virtual Host hast du die Möglichkeit wie beim Reverse Proxy auch über eine Domain oder eine Port zu konfigurieren. Der Virtual Host lauscht denn genau auf diesem Port oder Domain und leitet die Anfrage entsprechend weiter. Wenn du nun die IP nimmst, ohne den entsprechenden Port, wird es nicht funktionieren.

Auch deine Domain kannst du einfach erreichen, indem du einfach eine Umschreibung in der Host-Datei machst :)
 

Yves

Benutzer
Mitglied seit
03. Jan 2014
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Ahhh, habe ich noch nicht ganz begriffen, aber umgesetzt :)
Mein virtueller Host hört nun portbasiert auf den Port 1001. Wenn ich diese URL im Browser eingebe: 192.168.1.22:1001, dann erhalte ich meine Webseite und DOCUMENT_ROOT stimmt. Das ist perfekt. Damit kann ich sehr gut leben.

Dennoch, die Frage, diese Konfiguration funktioniert:
1681312322520.png
Document_Root = /volume1/web/Webseite.ch

Diese nicht:
1681310960980.png

192.168.1.22/Webseite.ch
(die Webseite funktioniert, aber Document_Root ist falsch: var/services/web)

Sollte hier bei der Namensbasiert der Document_Root nicht auch funktionieren, oder ist das dann einfach so?
 

Anhänge

  • 1681310826818.png
    1681310826818.png
    16,6 KB · Aufrufe: 4
Zuletzt bearbeitet:

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Das mit der Webseite funktioniert natürlich auch. Entweder schreibst du Hosts-Datei um oder du installierst den DNS-Server und legst eine Vorärts-Zone für deine Domain an. Die kann auch fiktiv sein. Die kann z.B. webseite-intern.ch sein oder intern.webseite.ch als Subdomain. Dann funktioniert auch alles ohne Eingabe des Ports und auf allen Clients ohne etwas zu bearbeiten. Wenn du eine Portfreigabe für andere Dienste hast, kannst du auch die Subdomain um von extern auf die Webseite im NAS zu gelangen. Das funktioniert natürlich auch mit einem Zertifikat.

Es ist vieles möglich.
 

Yves

Benutzer
Mitglied seit
03. Jan 2014
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Danke für deine Infos, du hast mir geholfen. Ich bleibe bei der Lösung mit der Portfreigabe. Das mit DNS-Server, und der Host-Datei habe ich leider nicht begriffen. Und warum ich - wenn ich es richtig gelesen habe - einen DNS-Server brauche, um namensbasierte Auflösung hinzukriegen, verstehe ich nicht. Ich konfiguriere das ganze als vHost, von mir aus sollte das doch - out of the box - funktionieren.
 

Yves

Benutzer
Mitglied seit
03. Jan 2014
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Mein Aufbau ist eventuell nicht optimal :rolleyes:. Ich habe ganz einfach die WebStation auf dem NAS installiert und aktiviert. Dann erhalte ich ein Verzeichnis /web. In dieses Verzeichnis erstelle ich wiederum ein Verzeichnis MeineWebseite.ch. Darin sind dann alle Dateien vorhanden. Ich kann diese Webseite mittels http://192.168.122/MeineWebseite.ch intern aufrufen und war bis jetzt zufrieden, weil funktioniert. Ich benutze diese lokale Installation zum Entwickeln. Wenn meine Anpassungen dann korrekt sind, schmeisse ich die Files auf meinen Hoster.
Bis vor ca. einer Woche hatte ich auch keinen virtuellen Host, weil die Anzeige im Browser auch so funktioniert. aus dem Verzeichnis /web kann ich alles anzeigen.

Weil ich nun Probleme mit den relativen Pfade gekriegt habe, möchte ich diese auf absolut umstellen. Von daher wäre es ganz gut, wenn ich lokal und auf dem NAS den gleiche $_SERVER["Document_Root"] habe (ausser ich mache da auch noch einen Denkfehler).
Daher keine Portfreigabe und Windows 11 auf der lokalen Kiste. Aber keine Konfiguration und nix, ausser der WebStation und neu die vHosts.
So wie es mit der Portfreigabe funktioniert, ist es gut.
Mit Portfreigabe führt 192.168.1.22:1001 direkt zu meiner Webseite mit dem korrekten Document_Root.
Mit Namensfreigabe führt 192.168.1.22/MeineWebseite.ch auch zu meiner Webseite, aber mit "falschem" Document_Root (obwohl in der Konfiguration als web/MeineWebseite.ch angegeben.

Wie gesagt, mit der Portfreigabe kann ich gut leben, da hast du mir gerade sehr geholfen. Es geht einfach nicht in meinen Kopf, warum die namensbasierte Freigabe nicht funktioniert.

Immer daran denken, ich bin Hobby-Entwickler und schon das ist übertrieben :). Für mich ist das ganze Mittel zum Zweck und manchmal brauche ich halt etwas mehr Infos.....
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Greifst du vom PC zu? Apple oder Windows? Android und IoS werden nicht benötigt?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.622
Punkte für Reaktionen
760
Punkte
154
Virtual Host und document root sind zwei unterschiedliche Dinge. Es ist egal wie dein virtual Host lautet. Also ob Port basiert oder über eine Domain. Den Document root setzt du, wenn du auf deinen virtual Host klickst und editieren wählst. Im Tab Backend siehst du direkt als erstes den Eintrag Document root. Den kannst du dann auf deinen gewünschten Ordner setzen.
 

Yves

Benutzer
Mitglied seit
03. Jan 2014
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Genau das habe ich gemacht:
Network:
1681381776787.png
Im Backend habe ich das Verzeichnis ausgewählt.
1681381729512.png
Namensbasiert:
Resultat, wenn ich die Variablen mit dem Browser abfrage:
http://192.168.1.22/MeineWebseite.ch/root.php
Der $_SERVER["DOCUMENT_ROOT"] lautet: string(17) "/var/services/web"
Das __DIR_: Verzeichnis lautet: string(29) "/volume1/web/MeineWebseite.ch"
Zudem funktionieren die src links nicht mit absolute Pfade:
<img src='/src/img/favicon/favicon-16x16.png' alt='MeineWebseite'><br>"
Link führt zu http://192.168.1.22/src/img/favicon/favicon-16x16.png
Es wird kein Bild angezeigt.

Portbasiert
Wenn ich den vHost portbasiert konfigurieren, dann erhalte ich folgende Werte:
http://192.168.1.22:1002/root.php
Der $_SERVER["DOCUMENT_ROOT"] lautet: string(29) "/volume1/web/MeineWebseite.ch"
Das __DIR_: Verzeichnis lautet: string(29) "/volume1/web/MeineWebseite.ch"
Auch funktionieren die src links:
<img src='/src/img/favicon/favicon-16x16.png' alt='MeineWebseite'><br>"
Link führt zu http://192.168.1.22:1001/src/img/favicon/favicon-16x16.png
Bild wird angezeigt.

Was ich nicht verstehe:
- Warum funktionieren die SRC Links bei namensbasiert nicht, aber bei portbasiert ?
- Ich war der Meinung, dass $_SERVER["DOCUMENT_ROOT"] und __DIR__ das gleiche ist (bei namensbasiert).

Aber wie gesagt, portbasiert funktioniert genau so, wie es sein sollte und ist für mich ok. Warum namensbasiert nicht hinhaut, da wird mein Wissen noch zu tief sein.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Wenn du einen namensbasierten Eintrag machst, musst du die Webseite auch über den Namen ansprechen. Das geht nur über eine interne Umschreibung oder externe Freigabe mit einer Subdomain.

Welches Betriebssystem hast du auf dem Rechner? Habe das schon einmal gefragt!
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Also Windows. Welche Version ist dabei egal. Schau einmal: https://kinsta.com/de/wissensdatenbank/hosts-datei-in-windows-10/
Sobald das eingerichtet bzw. eingetragen ist, kannst du auf die Domain mit dem Namen zugreifen. Beachte aber, dass deine Domain extern nicht mehr auszufinden ist. Das löst du einfach mit einer Subdomain oder einer geänderten Adresse. Siehe Beitrag #4.

Diese Einstellung gilt aber nur für den Client, nicht für das ganze Netzwerk. Bei anderen Clients muss das ganze wiederholt werden. Alternativ über den DNS-Server von Synology oder Freigabe von extern. Dann ist keine Änderung am Client notwendig. Das habe ich aber schon einmal geschrieben.
 

Yves

Benutzer
Mitglied seit
03. Jan 2014
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Oh yes, danke alexhell für den Typ betreffend Adresse und danke an EDvonSchleck betreffend Hosts Datein Habe die Hosts Datei agepasst und die Webseite nun korrekt aufgerufen. Jetzt funktioniert alles. Puh...


(y)
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat