CentOS上的WebDAV – 尝试上传时收到403错误

我configuration了Apache2以允许WebDav在一个目录(CentOS 5 / Plesk 8.6)上:

  • WebDav在httpd.conf中启用
  • / var / lib / dav / lockdb可由Apache写入
  • 我的目标目录是chmod 777
  • 我的目标目录是chown apache:psacln
  • 使用基本身份validation(由Plesk界面设置)

在我的vhost.conf中我有:

 <目录/var/www/vhosts/domain.com/httpdocs/target_dir>
         Dav On
     AllowOverride无
        订单允许,否认
        全部允许
 </目录>

我可以使用身份validation的罚款连接到目录,并从中下载文件。 但是我不能写信给dir。 当我尝试上传或创build目录时,出现403错误。

任何人有任何提示?

提前致谢 –

更新 – 6/5使用下面的评论我已经孤立这个问题是与.htpasswd受保护的目录的某种types的冲突。 我可以创build一个不受保护的目录,并使WebDAV上传正常。 但是,一旦我启用基本身份validation目录一切都南下。 我可以阅读,但不能上传。

这是我的vhost.conf:

 <Directory /var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/>
         AuthUserFile /var/www/.htpasswd
         AuthName“login”
         AuthType基本
        要求有效的用户

         DAV上
     AllowOverride无
         <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
                要求有效的用户
         </限制>
 </目录>

6/6更新

能够以最小的努力使WebDAV在不同的域上工作。 这两个域之间的唯一区别是,在拒绝写访问的那个域中,我有一个DocumentRoot指令:

     DocumentRoot /var/www/vhosts/domain.com/httpdocs/app/webroot

可能会造成一些问题?

最近我在Fedora 10系统上遇到了同样的问题。 在我的情况下,罪魁祸首是我在Apache做的一些奇怪的redirect。 具体来说,我使用了一个内容pipe理系统(准确的说是Drupal),它内部的.htaccess包含了下面的redirect逻辑,用于将丢失的文件redirect到PHP脚本:

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

因为在这种情况下REQUEST_FILENAME不存在,所以上面只影响PUT方法是有意义的。

没有Drupal区域内的WebDAV区域,这似乎是一个合理的约束,解决了这个问题。

另外,我认为SELinux可能会导致不同的错误,但是在上面的讨论中没有提到。 你尝试禁用SELinux吗?

同样的问题。 解决:

 <Location /xyz> DAV On AuthType Digest AuthName "webdav-xmarks" AuthDigestProvider file AuthUserFile "/home/xy/xba/digest-password" Require valid-user RewriteEngine off <-- this part solved it! </Location> 

你的error_log是什么意思? 这是第一个看的地方。

另外,在常规access_log中查看; 有时某些DAV客户端会尝试在高级目录上执行DAV事务,而不是在您工作的位置,这要求他们至less具有对虚拟主机根目录的只读DAV访问权限。

你尝试使用限制:(例如)

  <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Require valid-user </Limit> 

同样的问题。

通过在webdav目录中创build一个.htaccess文件解决:

 RewriteEngine off 

在这里find: http : //annoyingtechnicaldetails.wordpress.com/2007/07/20/webdav-vs-drupal-htaccess-redirect-rules/

正如Ram Prasad所说,你需要在vhosts.config文件中的Directory条目中使用Limit语句。

您还需要一个与.htaccess文件位于同一目录中的apache拥有的.DAV目录。 我发现这通常会导致403错误,因为Apache使用此文件夹来写入临时文件。

另见: http : //www.webdav.org/mod_dav/install.html