
Я настроил Apache2 для разрешения WebDav в каталоге (CentOS 5 / Plesk 8.6):
- WebDav включен в httpd.conf
- /var/lib/dav/lockdb доступен для записи Apache
- Мой целевой каталог — chmod 777
- Мой целевой каталог — chowned apache:psacln
- с использованием базовой аутентификации (настраивается через интерфейс Plesk)
в моем vhost.conf есть:
<Каталог /var/www/vhosts/domain.com/httpdocs/target_dir> Дэв Он AllowOverride нет Приказ разрешить,запретить Разрешить всем </Каталог>
Я могу подключиться к каталогу, используя аутентификацию, и скачать из него файлы. Но я не могу записать в каталог. Я получаю ошибку 403, когда пытаюсь загрузить или создать каталог.
Есть ли у кого-нибудь советы?
Заранее спасибо -
Обновление - 6/5Используя комментарии ниже, я изолировал проблему, которая заключается в каком-то типе конфликта с защищенными каталогами .htpasswd. Я могу создать незащищенный каталог и включить загрузку WebDAV. Но как только я включаю базовую аутентификацию для каталога, все идет наперекосяк. Я могу читать, но больше не могу загружать.
Это мой vhost.conf:
<Каталог /var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/> Файл аутентификации пользователя /var/www/.htpasswd Имя_авторизации "Логин" Базовый тип аутентификации Требовать действительного пользователя DAV на AllowOverride нет <Ограничить РАЗМЕСТИТЬ УДАЛИТЬ PROPFIND PROPPATCH MKCOL КОПИРОВАТЬ ПЕРЕМЕЩЕНИЕ ЗАБЛОКИРОВАТЬ РАЗБЛОКИРОВАТЬ> Требовать действительного пользователя </Ограничение> </Каталог>
Обновление 6/6
Смог заставить WebDAV работать на другом домене с минимальными усилиями. Единственное различие между двумя доменами заключается в том, что в том, который отказывается разрешить запись, у меня есть директива DocumentRoot:
DocumentRoot /var/www/vhosts/domain.com/httpdocs/app/webroot
Может ли это вызывать какие-то проблемы?
решение1
Недавно я боролся с той же проблемой на моей системе Fedora 10. В моем случае виновником было какое-то странное перенаправление, которое я делал в Apache. В частности, я использую систему управления контентом (Drupal, если быть точным), которая в своем .htaccess включает следующую логику перенаправления для перенаправления отсутствующих файлов в 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]
Логично, что вышеизложенное влияет только на метод PUT, поскольку в этом случае REQUEST_FILENAME не существует.
Отсутствие области WebDAV внутри области Drupal, что кажется разумным ограничением, решает проблему.
Также, я думаю, что SELinux, скорее всего, приведет к другой ошибке, но это не упомянуто в обсуждении выше. Вы пробовали отключить SELinux?
решение2
Та же проблема. Решено:
<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>
решение3
Та же проблема.
Решено созданием файла .htaccess в каталоге webdav с помощью:
RewriteEngine off
Найдено здесь:http://annoyingtechnicaldetails.wordpress.com/2007/07/20/webdav-vs-drupal-htaccess-redirect-rules/
решение4
Вы пробовали использовать limit: (например)
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require valid-user
</Limit>