我正在尝试在装有 Apache 2.2 的 CentOS 6.5 服务器上设置 WebDAV,但遇到了问题。
我正在遵循这个指南:http://www.howtoforge.com/how-to-set-up-webdav-with-apache2-on-centos-5.5
我已经验证所需的 mod_dav.so 和 mod_dav_fs.so 模块已启用。
我已经创建了我的虚拟主机条目,如下所示:
<VirtualHost 11.22.33.44:80>
SuexecUserGroup "#500" "#500"
ServerName dav.naijastories.com
DocumentRoot /home/myuser/public_html/
ScriptAlias /cgi-bin /home/myuser/public_html/cgi-bin
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /home/myuser/public_html/>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/myuser/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/myuser/fcgi-bin/php5.fcgi .php5
</Directory>
Alias /webdav /home/myuser/public_html
<Location /webdav>
DAV On
AuthType Basic
AuthName "myuser"
AuthUserFile /home/myuser/.myuserpassfile
Require valid-user
</Location>
FcgidIOTimeout 600
</VirtualHost>
我已确保 .myuserpassfile 确实包含 myuser 的正确凭据。
做出这些更改后,我重新启动了 Apache 服务。
但是当我导航到 dav.naijastories.com 时,我没有看到任何像目录结构的东西。
我在这里做错了什么?
编辑:
我在这方面取得了进展。
为了更清楚地说明这一点,我实际上是试图从我的 Windows PC 轻松访问 CentOS 机器上的文件;我以为我必须通过我的浏览器来做到这一点,但事实证明通过 Windows 资源管理器来做到这一点更容易。
首先,我将虚拟主机部分改为如下形式:
<VirtualHost 11.22.33.44:80>
ServerName dav.mysite.com
DocumentRoot /home/myuser/public_html
<Directory /home/myuser/public_html>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
DAV On
AuthType Digest
AuthName "dav"
AuthDigestDomain http://dav.mysite.com
AuthUserFile /home/myuser/.htdigest
Require valid-user
</Directory>
</VirtualHost>
在哪里:
- 11.22.33.44是网站主机的 IP 地址;
- dav.mysite.com(在 ServerName 中) 是主站点的一个子域,它映射到要通过 WebDAV 共享的文件目录;
- /主页/我的用户/public_html(在 DocumentRoot 中)是包含要共享的文件的目录;
- 戴夫(在 AuthName 中)是子域名的第一部分;
- /home/myuser/.htdigest
htdigest
是用来保存被授权访问 WebDAV 共享文件的用户的凭证而创建的文件; - http://dav.mysite.com(在 AuthDigestDomain 中)与 ServerName 具有完全相同的主机名。
将其添加到httpd.conf
文件并重新启动 apache 后,在我的 Windows PC 上,我执行以下操作:
- 打开Windows资源管理器;
- 右键单击“网络”,然后单击“映射网络驱动器”;
- 在“文件夹”字段中输入http://dav.mysite.com(与 AuthDigestDomain 的值相同);
- 选择“使用不同的凭据连接”;
- 点击‘完成’;
- 在出现的登录框中,使用我在创建 .htdigest 文件时提供的相同凭据
完成此操作后,我就可以登录并查看我的文件。
但是,我无法写入我在资源管理器中看到的文件夹。
每当我这样做时,我都会收到此消息:
“意外错误导致您无法创建文件。如果您继续收到此错误,您可以使用错误代码来搜索有关此问题的帮助。错误 0x80070780:系统无法访问该文件。”
查看 apache 日志,我看到如下错误:
[Sun Nov 09 16:40:55 2014] [error] [client 11.22.33.44] client denied by server configuration: /home/myuser/public_html/.htaccess
[Sun Nov 09 16:40:55 2014] [error] [client 11.22.33.44] (13)Permission denied: access to /webdav/index.html denied
[Sun Nov 09 16:40:55 2014] [error] [client 11.22.33.44] (13)Permission denied: access to /webdav/index.html.var denied
[Sun Nov 09 16:40:56 2014] [error] [client 11.22.33.44] Unable to PUT new contents for /wptest/New Text Document.txt. [403, #0]
[Sun Nov 09 16:40:56 2014] [error] [client 11.22.33.44] (13)Permission denied: An error occurred while opening a resource. [500, #0]
我对此感到困惑。我的 .htaccess 文件中没有任何内容限制访问(我甚至没有将文件复制到那里),并且我的机器上没有 webdav 目录。
有任何想法吗?