Nein, das ist ein deutsches Forum und es gibt nur einen englischsprachigen User hier, der auch Ahnung hat (jjtag o.ä.).
Ich habe bei mir mal einen WebDAV in Xampp unter Linux eingerichtet, Du machst einige Dinge falsch, andere hast Du falsch verstanden aber insgesamt bist Du nicht meilenweit weg. Mein persönlich größtes Problem war, überhaupt einen funktionierenden WebDAV Client zu finden, der mir sagen kann, dass meine Seite richtig funktioniert. Was nämlich NICHT geht (d.h. es geht schon, aber das ist dann keine WebDAV Funktionalität) ist es, im Browser einfach
http://... einzugeben. Dann wird die Seite nur mit einem normalen HTTP Request abgerufen.
Ich habe einen Ordner webdav angelegt (/opt/lampp/webdav) und dann mit chown daemon:daemon den User und die Gruppe an daemon vergeben. Das ist schon Dein erster (kleiner) Fehler, Du benutzt www-data, aber Xampp wird nicht so ausgeliefert. in httpd.conf findest Du den Eintrag "Group daemon", also ist auch die Gruppe daemon.
Dann braucht man einen ALIAS, der ist einfach:
- Code: Select all
ALIAS /webdav /opt/lampp/webdav
Außerdem muss in httpd.conf der include auf httpd-dav.conf freigeschaltet werden (hast Du schon getan, vorne das "#" wegmachen).
Dann hast Du ein Lockfile angegeben, da hast Du einen ganz schweren Fehler gemacht, die Angabe DavLockDB muss auf einen Pfadnamen (eine Datei!) verweisen, NICHT auf einen Ordner. Also so beispielsweise:
- Code: Select all
DavLockDB "/opt/lampp/var/DavLock/DB"
Und das ist der Trick: dieses "DB" am Ende (habe ich einfach ausgedacht), das ist eine DATEI! Kein Ordner! Aber NICHT die Datei anlegen, das macht Apache selbst. Du musst aber den Ordner darüber anlegen, also /opt/lampp/var/DavLock - den Ordner musst Du anlegen und dann (genau wie den Ordner webdav von oben) an User und Gruppe daemon vergeben:
- Code: Select all
sudo chown daemon:daenom /opt/lampp/var/DavLock
Und jetzt nicht DB anlegen!
Dann stelle ich mal meine httpd-dav.conf hier ein, da hast Du inzwischen auch einige Fehler drin. Deine Require Statements sind so total sinnlos, ich habe aber die Originale auch rausgenommen. Im Original ist die Konfiguration so eingestellt, dass ein "normaler" GET Request (und ein paar andere, aber das ist der wichtigste HTTP Request) ohne Passwort einfach durchläuft. D.h. es wird der Inhalt von webdav angezeigt. Da ist übrigens Dein erster Fehler gewesen, Du musst (theoretisch) in dem Ordner webdav eine Datei index.html anlegen, deren Inhalt wird von Apache ausgegeben, wenn
http://localhost/webdav verlangt wird. Wenn es diese Datei nicht gibt (und die gab es bei Dir nicht), dann bekommst Du einen Error 403. Denn das Verzeichnis webdav darf mit Deiner Konfiguration nicht angezeigt werden. Das ist auch leider ungenau im Xampp Default Setup voreingestellt, es muss nämlich UNBEDINGT "Options Indexes" im Directory Container für den webdav Ordner drin stehen, sonst funktioniert das ganze WebDAV Zeug nicht. Also hier die komplette httpd-dav.conf:
- Code: Select all
#
# Distributed authoring and versioning (WebDAV)
#
# Required modules: mod_alias, mod_auth_digest, mod_authn_core, mod_authn_file,
# mod_authz_core, mod_authz_user, mod_dav, mod_dav_fs,
# mod_setenvif
# The following example gives DAV write access to a directory called
# "uploads" under the ServerRoot directory.
#
# The User/Group specified in httpd.conf needs to have write permissions
# on the directory where the DavLockDB is placed and on any directory where
# "Dav On" is specified.
DavLockDB "/opt/lampp/var/DavLock/DB"
Alias /webdav "/opt/lampp/webdav"
<Directory "/opt/lampp/webdav">
Options Indexes
Dav On
AuthType Digest
AuthName DAV-upload
# You can use the htdigest program to create the password database:
# htdigest -c "/opt/lampp/user.passwd" DAV-upload admin
AuthUserFile "/opt/lampp/user.passwd"
AuthDigestProvider file
# Allow universal read-access, but writes are restricted
# to the admin user.
<RequireAny>
# Require method GET POST OPTIONS
Require user admin
</RequireAny>
</Directory>
#
# The following directives disable redirects on non-GET requests for
# a directory that does not include the trailing slash. This fixes a
# problem with several clients that do not appropriately handle
# redirects for folders with DAV methods.
#
# BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
# BrowserMatch "MS FrontPage" redirect-carefully
# BrowserMatch "^WebDrive" redirect-carefully
# BrowserMatch "^WebDAVFS/1.[01234]" redirect-carefully
# BrowserMatch "^gnome-vfs/1.0" redirect-carefully
# BrowserMatch "^XML Spy" redirect-carefully
# BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
# BrowserMatch " Konqueror/4" redirect-carefully
Wie Du siehst, habe ich den "Require method GET POST OPTIONS" auskommentiert. Wenn ich das nicht gemacht hätte, kann man ohne User und Passwort einfach den Inhalt im Browser ansehen, das wollen wir ja eigentlich nicht. (Außerdem habe ich die ganzen BrowserMatch auskommentiert, brauchen wir nicht.) Jetzt steht nur noch "Require user admin" drin, d.h. jetzt muss der Anwender (bzw. der WebDAV Client) den User admin und dessen Passwort angeben. Das müssen wir noch anlegen im Ordner /opt/lampp, das komplette Kommando sieht so aus:
- Code: Select all
sudo /opt/lampp/bin/htdigest -c "/opt/lampp/user.passwd" DAV-upload admin
Das musst Du in einem Terminal ausführen, dann kommt eine Aufforderung, für einen User admin ein Passwort anzugeben, das muss man dann auch nochmal bestätigen. Ich habe der Einfachheit halber auch da "admin" genommen. Kannst Du jedes eigene Passwort nehmen. Danach gibt es die Datei user.passwd im Verzeichnis /opt/lampp. Zur Sicherheit würde ich auch diese Datei an User und Gruppe daemon vergeben, denn Apache MUSS sie lesen können. Das geht natürlich auch mit den richtigen Dateiberechtigungen (chmod), das spielt keine Rolle. Also ich habe das so gemacht:
- Code: Select all
sudo chown daemon:daemon /opt/lampp/user.passwd
So, jetzt haben wir alles fertig. Jetzt aber NICHT eine Datei index.html in webdav einstellen. Da ich aber auch keinen leeren Ordner haben wollte, habe ich einfach meine index.html umbenannt in index.org - dann steht wenigstens irgendeine Datei in /opt/lampp/webdav drin.
Jetzt brauchen wir einen WebDAV Client, ich benutze Linux Mint, da ist als Explorer "Nemo" dabei, der kann webdav. Die meisten Explorer in Linux können es. Jetzt kann ich natürlich nicht sehen, was Du benutzt. Bei Nemo (und einigen anderen Datei Explorern) klickst Du oben links auf "Datei" und dort im Menu auf "Mit Server verbinden...". Ach so - natürlich als erstes Xampp resp. Apache starten. Wenn Du einen Fehler in der Konfiguration hast, könnte es sein, dass der Start fehlschlägt. Ich habe fast immer irgendeinen Tippfehler drin...
So, dann machen wir im Nemo oder so weiter. Im Folgedialog (Serverdetails) musst Du den Server angeben, das ist "localhost" (ohne Gänsefüsschen). Der Port sollte 80 sein. Als Typ musst Du "WebDAV (HTTP)" wählen (so oder ähnlich muss das heißen, wenn da gar nichts in der Art steht, kann das Dein Explorer nicht, dann installiere Nemo aus dem Repository). Dann noch Benutzernamen (admin) und Passwort (admin, oder eben was Du oben festgelegt hast) und wenn alles fertig ist, abschicken. "Passwort merken" natürlich aktivieren, sonst musst Du es immer neu eingeben.
Wenn alles richtig ist, zeigt Dir Nemo jetzt den Ordnerinhalt von /opt/lampp/webdav an, aber unter der Adresse
dav://admin@localhost/webdav (dav: ist das Protokoll, admin der Benutzername, das Passwort natürlich nicht gezeigt, localhost ist der Server und webdav der Ordner). Jetzt kannst Du beispielsweise mal in einen anderen Datei Ordner wechseln, markierst und kopierst irgendeine Datei und wechselst zurück auf den WebDAV Ordner (der steht bei mir links in der Leiste). Und dann mit Ctrl.V (Strg.V) die Datei da einfügen. Das sollte jetzt gehen, das ist jetzt Einfügen via WebDAV. Die Browser können das alle nicht (nur der Konqueror Browser, habe ich aber nicht getestet).