XAMPPでWebDAVを利用とした際の覚書

XAMPPはWindows環境で最新バージョンを取ってきた筈です。

WebDAVを利用しようとしたところ、インストールフォルダをC:\xamppとすると
C:\xampp\webdavフォルダ以下がデフォルトでWebDAVで公開されるルートフォルダになる。

このフォルダ内に日本語ファイル名のファイルも混在でファイルをやり取りしようとしたところ、XAMPPのデフォルト設定では何度やってもWebフォルダが作成できない。

最初は、Windowsクライアント側の問題として以下の対処を実施。
http://www.aconus.com/~oyaji/www/apache_win_dav.htm
http://support.microsoft.com/kb/287402/ja
http://support.microsoft.com/default.aspx?scid=kb;ja;825382

だがそれでも、認証画面までは出るものの、認証後にエラーが出てはじかれる。

Windows標準のWebフォルダが結局ダメなのかも、と今度はクライアントを入替。
これを見つけた。
http://www.rei.to/carotdav.html#download

結構素直な実装でたすかる。一番よいのはテスト接続モードがあるところ。
これを実行すると、認証に成功した後のPROPFIND に失敗していることがわかる。

Apacheaccess.logを見たところ、

192.168.0.102 - - [30/Jul/2009:00:35:35 +0900] "PROPFIND /webdav/ HTTP/1.1" 401 1341
192.168.0.102 - - [30/Jul/2009:00:35:35 +0900] "PROPFIND /webdav/ HTTP/1.1" 500 1126

で、ステータスエラー500が出る。

で、やっとApacheのconfを確認に行くと、C:\xampp\apache\conf\extra フォルダの httpd-dav.conf を発見。

#
# Distributed authoring and versioning (WebDAV)
#

# 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 "C:/xampp/tmp/DavLock"
Alias /webdav "C:/xampp/webdav"


Dav On
Order allow,deny
Allow from all
AuthName DAV-upload

# You can use the htdigest program to create the password database:
# \xampp\apache\bin\htdigest -c "\xampp\security\htpasswd.webdav" "XAMPP with WebDAV" user
# AuthType Digest
# AuthDigestDomain / http://localhost/

# Here with htpasswd and md5
# \xampp\apache\bin\htpasswd -b \xampp\security\htpasswd.webdav user
AuthType Basic
AuthUserFile "C:/xampp/security/htpasswd.webdav"


require valid-user


BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On



という中で、


require valid-user

この文が権限の制約を行っているので、


require valid-user

としてPROPFINDを追加したところ、接続できるようになった。解決。

ただし上記の記述追加だと、単にこのフォルダが読み取り専用のWebフォルダになるだけ。
これを書き込みもOKにする場合は、そもそもこのLimitExceptディレクティブ記述を削除してしまうと可能になる。
日本語でもOK。

でもネット上に公開するサーバとかなら、もう少し権限制約は考えたほうが良いだろう。