Konfiguration Apache-Server (httpd.conf)

Alles, was den Apache betrifft, kann hier besprochen werden.

Konfiguration Apache-Server (httpd.conf)

Postby OldieGER » 18. July 2018 09:17

Hallo werte Forengemeinschaft,
habe eine dynamische Website (PHP) mit einem kleinen portalen Webserver erstellt.

USBWebserver V8.6.2
Php 7.1.11
Httpd Apache/2.4.29 (Win32) (Hostname:Port = localhost:80)
PhpMyAdmin 4.7.5
MySQL 5.6.34 (Port: 3306)


Mein Problem ist, dass Links auf lokale Dateien bzw. Verzeichnisse die außerhalb der "root dir" liegen nicht geöffnet werden.
Code: Select all
<a href="file:///D:/test.txt" ... > oder <a href="file://localhost/D:/test.txt" ... >

Mir ist bekannt, dass serverseitig ein Zugriff auf lokale Dateien oder Verzeichnisse aus Sicherheitsgründen im Web "nicht möglich" sind.
Da ich den Server nur lokal :!: nutze müsste doch ein Zugriff auf lokale Dateien, Verzeichnisse und Laufwerke irgendwie möglich sein :?:
Ich vermute, dass in der "httpd.conf" die entsprechenden Module usw. deaktiviert sind bzw. nicht vorhanden sind.
Was müsste ich in der "httpd.conf" ändern bzw. ergänzen, damit ein Zugriff auf lokale Rechnerdateien usw. möglich ist :?: :?:
Könnte ich über die Funktion - Alias das Problem lösen und wie müsste ich das konfigurieren :?:

Vorab danke für die Hilfe bzw. Tipps :wink:
OldieGER
 
Posts: 5
Joined: 18. July 2018 06:49
XAMPP version: 7.2.7
Operating System: Win 7

Re: Konfiguration Apache-Server (httpd.conf)

Postby Altrea » 18. July 2018 21:27

Hallo,

Du bist hier in unserem Forum leider falsch. Wir supporten hier nur bei Fragen und Problemen die aus einer XAMPP installation stammen. USBWebserver ist ein Alternativprodukt, daher solltest du mit deiner Frage in einem USBWebserver thematisiertem Supportkanal besser aufgehoben sein.

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: 9336
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Konfiguration Apache-Server (httpd.conf)

Postby OldieGER » 19. July 2018 05:44

Okay :(
OldieGER
 
Posts: 5
Joined: 18. July 2018 06:49
XAMPP version: 7.2.7
Operating System: Win 7

Re: Konfiguration Apache-Server (httpd.conf)

Postby Nobbie » 19. July 2018 12:54

Das Problem hat ja mit dem installierten Apache nichts zu tun, das ist ein reines Verständnisproblem.

Links mit Protokoll "file:" (wie im Beispiel) werden vom Browser gar nicht erst an irgendeinen Webserver gesendet, eben weil das Protokoll "file:" ist anstelle von "http:". D.h. wenn ein solcher Link in einem HTML Dokument steht, dann wird der Browser auf dem Clientrechner(!) direkt auf die Festplatte gehen und von dort versuchen, dass spezifizierte Dokument "D:/test.txt" laden, wobei hier auch noch ein Slash "/" zu viel angegeben ist, richtig müßte der Link so lauten:

Code: Select all
<a href="file://D:/test.txt">


Dann (und nur dann) wenn der Browser auf demselben Rechner liegt wie die Apache Installation, dann wird von diesem Rechner das gewünschte Dokument D:/test.txt geladen. Wenn der Browser aber beispielsweise auf einem anderen Rechner im LAN die Seite geladen hat, dann wird von DIESEM PC versucht, eine Datei D:/test.txt zu laden.

In jedem Fall wird dabei aber KEIN Apache Server kontaktiert, der Browser sendet KEINE Anfrage an irgendeinen Apache Server und das Dokument wird in KEINEM FALL von einem PHP Interpreter ausgeführt, auch nicht, wenn man das Dokument beispielsweise test.php nennt. Da der Browser das Dokument selbst öffnet (und nicht bei einem Apache Server anfragt), wird er es nicht an einen PHP Interpreter schicken, weil der Browser keinerlei Kenntnis von PHP hat. Für einen solchen Link mit "file:" ist also ein Apache Server weder notwendig, noch wird ein Request auf einen Apache Server geschickt. Das bedeutet dann aber auch, dass man mit keiner Einstellung der Welt in irgendeinem Apache Server irgendein Verhalten erzeugen kann, dass solche Links vom Apache Server (egal von welchem) ausgeführt werden, denn es wird kein Apache Server benötigt. Das ganze Scenario läuft ohne Apache.

Das kann man auch damit nicht verbessern, dass man im Link noch einen Domainnamen a la "localhost" angibt, das ist zwar für das Protokoll http: eine valide Angabe, aber für das hier gewählte Protokoll "file:" ist das syntaktischer Unsinn und der Browser fängt überhaupt nichts damit an.

Ergo: möchte man Dokumente von einem Apache Server anfordern, so MUSS IN JEDEM FALL das Protokoll http: (oder https:) angegeben werden. Die nächste Angabe in so einer URL ist die Serveradresse, das kann "localhost" sein (das wäre dann wieder derselbe Rechner, auf dem auch der Browser läuft, der diese Seite dann anfordert), das kann eine IP sein, beispielsweise die LAN IP des Rechners, wo der Apache installiert ist, das kann ein anderer Servername sein, beispielsweise "meinserver" oder ähnlich, wobei man dann selbst dafür sorgen muss, dass der Rechner, wo der Browser läuft, auch "weiß", welcher Rechner mit "meinserver" gemeint ist.

Und im Anschluss an die Angabe des Protokolls und des Servers kann man sog. "Ressourcen" angeben, das sind meistens Ordnernamen oder Dateinamen und sie sehen zumindest wie Ordnernamen aus. An dieser Stelle erst kann man mit einer ALIAS Anweisung eingreifen, da kann man dem Apache "befehlen", dass er bei bestimmten Ordnernamen in Wirklichkeit in ganz anderen Verzeichnissen nachschaut, als es dem Link nach den Anschein hat. Beispiel:

Code: Select all
<a href="http://localhost/meinordner/test.txt">


Wird auf diesen Link geklickt, dann schickt der Browser an den Rechner "localhost" (das ist dieser Rechner selbst, also muss dort auch ein Apache laufen, damit da jemand antwortet) den Request, schicke mir die Ressource "/meinordner/test.txt". Ohne weitere Zusatzeinstellung würde jetzt der Apache auf dem localhost hingehen, sich in das DocumentRoot Verzeichnis begeben und von dort in den Ordner meinordner und würde von dort die Datei test.txt ausliefern. Diese Standardverhalten kann man mit einer ALIAS Anweisung überschreiben, in diesem Fall brauchen wir so eine Anweisung in httpd.conf:

Code: Select all
ALIAS /meinordner D:/


Wenn Apache so eine ALIAS Anweisung in der Konfiguration hat, dann würde er im obigen Fall sein Verhalten ändern, er würde NICHT zum DocumentRoot gehen und NICHT von dort zum Ordner meinordner, sondert er würde stattdessen direkt nach D:/ gehen dann von dort die Datei test.txt ausliefern.

Möchte man von einem Rechner im LAN den Browser starten und von dem Rechner mit dem Apache Server dieses test.txt Dokument anfordern, so gibt man statt localhost in dem Link beispielsweise einfach die LAN IP von dem Rechner an, wo der Apache läuft, beispielsweise 192.168.1.22 oder so, dann sieht das so aus:

Code: Select all
<a href="http://192.168.1.22/meinordner/test.txt">


Und wegen der ALIAS Anweisung auf dem Zielrechner, wo der Apache läuft, geht dort der Apache hin und liefert wieder das Dokument test.txt aus D:/ heraus aus. So wie es (wahrscheinlich) gewünscht ist. Mit der Angabe von "file:" statt "http:" kommt man hier nicht ans Ziel.
Nobbie
 
Posts: 10548
Joined: 09. March 2008 13:04

Re: Konfiguration Apache-Server (httpd.conf)

Postby Altrea » 19. July 2018 17:08

Nobbie wrote:wobei hier auch noch ein Slash "/" zu viel angegeben ist, richtig müßte der Link so lauten:

Code: Select all
<a href="file://D:/test.txt">

Das ist nicht korrekt. RFC 1738 "Uniform Resource Locators (URL)" definiert den Aufbau des file protocols in URIs wie folgt:
RFC 1738 wrote:3.10 FILES

The file URL scheme is used to designate files accessible on a
particular host computer. This scheme, unlike most other URL schemes,
does not designate a resource that is universally accessible over the
Internet.

A file URL takes the form:

file://<host>/<path>

where <host> is the fully qualified domain name of the system on
which the <path> is accessible, and <path> is a hierarchical
directory path of the form <directory>/<directory>/.../<name>.

For example, a VMS file

DISK$USER:[MY.NOTES]NOTE123456.TXT

might become

<URL:file://vms.host.edu/disk$user/my/notes/note12345.txt>

As a special case, <host> can be the string "localhost" or the empty
string; this is interpreted as `the machine from which the URL is
being interpreted'.


The file URL scheme is unusual in that it does not specify an
Internet protocol or access method for such files; as such, its
utility in network protocols between hosts is limited.


Die Schreibweise mit 3 Slashes ist also RFC 1738 konform.

Quelle: https://www.ietf.org/rfc/rfc1738.txt
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: 9336
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Konfiguration Apache-Server (httpd.conf)

Postby OldieGER » 20. July 2018 06:25

Hallo Nobbie,
hallo Altrea,

@Nobbie
Vielen Dank für die ausführlichen und verständlichen Informationen.
Es hat mir sehr weiter geholfen :wink: :wink: .
Wenn ich es richtig verstanden habe kann ich nur über Alias auf lokale Ressourcen zugreifen, wenn sie vorab in der httpd.conf spezifiziert wurden.
Da meine kleine Website (1 Page) als Navigation zu lokalen LW, Verzeichnissen und Dateien fungieren soll, gibt es eine Möglichkeit statt mehreren Alias-Spezifikationen (Bsp. Alias für Zugriff auf Dateien, Alias für Zugriff auf Verzeichnisse usw.) ein Alias mit relativen Pfad auf alle Ressourcen (lokale Dateisystem) zu setzen :?:.
Bsp. Alias /meincomputer/user/ alleLW ...

Hinweis: Es geht nur um "localhost" Rechner mit Apache-Server und Browser, kein LAN.
Mir ist bewußt, dass man das Ganze mit einer statischen HTML-Seite umsetzen kann, aber es ist für einen weiteren Personenkreis gedacht, welcher sich über eine Konfigurationsansicht im Browser die Bezeichnungen
für Links, Überschriften usw. selbst erstellen kann (... deshalb dynamische Website mit portalen Webserver-Apache, PHP, MySQL :wink: )

@Altrea
In der Quell-Information RFC 1738 gibt es auf Seite 17 einen Eintrag den ich nicht verstehe, könntest Du bitte erklären.
Welche Rolle spielt der "localhost" in der "fileurl" :?:
Berners-Lee, Masinter & McCahill [Page 17]
RFC 1738 Uniform Resource Locators (URL) December 1994

; FILE
fileurl = "file://" [ host | "localhost" ] "/" fpath


Vielen Dank für die Hilfe und Tipps :wink:

Hier noch ein kleines Bild von der Website :wink:
Image
OldieGER
 
Posts: 5
Joined: 18. July 2018 06:49
XAMPP version: 7.2.7
Operating System: Win 7

Re: Konfiguration Apache-Server (httpd.conf)

Postby Altrea » 20. July 2018 08:54

OldieGER wrote:@Altrea
In der Quell-Information RFC 1738 gibt es auf Seite 17 einen Eintrag den ich nicht verstehe, könntest Du bitte erklären.
Welche Rolle spielt der "localhost" in der "fileurl" :?:
Berners-Lee, Masinter & McCahill [Page 17]
RFC 1738 Uniform Resource Locators (URL) December 1994

; FILE
fileurl = "file://" [ host | "localhost" ] "/" fpath

localhost gilt als Äquivalent für einen vollqualifizierten Domainnamen, wenn sich die Ressourcen auf demselben System befinden von dem die Anfrage kommt.
Nach file:// kommt also entweder ein host (vollqualifizierter Domainname), oder localhost (in diesem Fall kann er auch komplett weggelassen werden).
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: 9336
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Konfiguration Apache-Server (httpd.conf)

Postby Nobbie » 20. July 2018 09:54

Altrea wrote:localhost gilt als Äquivalent für einen vollqualifizierten Domainnamen, wenn sich die Ressourcen auf demselben System befinden von dem die Anfrage kommt.
Nach file:// kommt also entweder ein host (vollqualifizierter Domainname), oder localhost (in diesem Fall kann er auch komplett weggelassen werden).


Theorie und Praxis. Oben steht nicht aus Versehen "VMS" als Betriebssystem und in VMS geht das file: Protokoll natürlich auch mit Netzwerkressourcen. Wir sind hier aber unter Windows, hast Du es jemals geschafft, im WIndows Netzwerk eine Datei mit //servername/d:/test.txt anzusprechen? Und warum wohl generieren manche Linux Explorer das Protokoll smb: bei Dateizugriffen über ein Windowsnetzwerk und nicht file:? Und warum gibt es unter WIndows sog. "Freigaben", wenn man doch einfach //servername/d:/test.txt angeben könnte?

Weil das alles nur Theorie ist und von Microsoft nie im Kernel implementiert wurde. Das file: Protokoll unterstützt unter Windows keine Netzwerkressourcen, man kann keine Rechte und User angeben, nur lokale Pfade. Unter VMS ist das natürlich etwas anderes.
Nobbie
 
Posts: 10548
Joined: 09. March 2008 13:04

Re: Konfiguration Apache-Server (httpd.conf)

Postby Altrea » 20. July 2018 11:56

Tatsächlich habe ich über das file protocol schonmal Resourcen Windows-Server übergreifend zur Verfügung gestellt, allerdings nur über definierte Freigaben.
Das Verhalten der Browser war und ist hier auch nicht konsistent was den Aufbau des URI betrifft.
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: 9336
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Konfiguration Apache-Server (httpd.conf)

Postby Nobbie » 20. July 2018 13:57

Altrea wrote:Tatsächlich habe ich über das file protocol schonmal Resourcen Windows-Server übergreifend zur Verfügung gestellt, allerdings nur über definierte Freigaben.


Das wäre sogar (theoretisch) vorstellbar, allerdings ist das nicht das Problem des Browsers, der Kernel muss es können. Deswegen glaube ich auch eigentlich nicht, dass es geht, es ist kein Zufall, dass (ein paar) Linux Explorer ein Protokoll smb: generieren. Aber über lokale Laufwerksbuchstaben (bei VMS gar kein Problem), geht rein gar nichts. Ohne Samba Protokoll (welches die Benutzer und Zugriffsrechte verwaltet) ist bei Windows der Ofen aus. VMS ist ein RICHTIGES Betriebssystem, Microsoft hat ja nur hier und dort ein paar Konzepte abgekupfert (u.a. die Laufwerksbezeichnung mit Doppelpunkt, aber bei VMS darf ein Laufwerk beliebig heißen und nicht so ein einziges Zeichen a la C:).
Nobbie
 
Posts: 10548
Joined: 09. March 2008 13:04

Re: Konfiguration Apache-Server (httpd.conf)

Postby OldieGER » 23. July 2018 12:30

Hallo,
der Zugriff auf lokale Verzeichnisse, Dateien und Programme funktioniert jetzt tadellos :D .
Nochmals ein dickes Dankeschön an Nobbie :wink: .

Code: Select all
#--Laufwerks-Zugriffe---------------------------------
Alias /LWD D:/
  <Directory "D:/">
     Options Indexes FollowSymlinks     
     Order Allow,Deny
     Allow from all
  </Directory>

Alias /LWX X:/
  <Directory "X:/">
     Options Indexes FollowSymlinks     
     Order Allow,Deny
     Allow from all
  </Directory>

Alias /LWC C:/
  <Directory "C:/">
     Options Indexes FollowSymlinks     
     Order Allow,Deny
     Allow from all
  </Directory>
#----------------------------------


Kann man den Zugriff auf mehrere Laufwerke, vielleicht durch Platzhalter (?,*,[ ]), für ein Alias komprimieren :?:
Beispiele:
Code: Select all
Alias /Laufwerke ?:/
  <Directory "?:/">
     Options Indexes FollowSymlinks     
     Order Allow,Deny
     Allow from all
  </Directory>

oder ...

Alias /Laufwerke [A-Z]:/
  <Directory "[A-Z]:/">
     Options Indexes FollowSymlinks     
     Order Allow,Deny
     Allow from all
  </Directory>



Gibt es in der httpd.conf Möglichkeiten die Performance des Servers zu erhöhen :?:
Bei Access-Datenbanken die etwas Größer sind ( z.B. 1,5 GB) dauert der Download etwas :roll: .

Vielen Dank für die Tipps und Hilfe ...
OldieGER
 
Posts: 5
Joined: 18. July 2018 06:49
XAMPP version: 7.2.7
Operating System: Win 7

Re: Konfiguration Apache-Server (httpd.conf)

Postby Nobbie » 23. July 2018 20:24

OldieGER wrote:Kann man den Zugriff auf mehrere Laufwerke, vielleicht durch Platzhalter (?,*,[ ]), für ein Alias komprimieren :?:


Nicht mit ALIAS. Es gibt eine Möglichkeit, mit Massenvhosts auf verschiedene DocumentRoots zuzugreifen. Siehe https://httpd.apache.org/docs/2.2/vhosts/mass.html

Gibt es in der httpd.conf Möglichkeiten die Performance des Servers zu erhöhen :?:


Ich denke nicht für Einzelplätze und Zugriffe, wenn überhaupt. Und auf Access hat Apache überhaupt keine Optionen. Und ein 1,5GB Download ist in jedem Fall ein Brummer.
Nobbie
 
Posts: 10548
Joined: 09. March 2008 13:04

Re: Konfiguration Apache-Server (httpd.conf)

Postby OldieGER » 24. July 2018 05:38

Danke :wink:
OldieGER
 
Posts: 5
Joined: 18. July 2018 06:49
XAMPP version: 7.2.7
Operating System: Win 7


Return to Apache

Who is online

Users browsing this forum: No registered users and 3 guests