apache2.4 com o webdav fornece um erro 405

4

Acabei de atualizar minha máquina de teste do Apache 2.2.29 para o 2.4.10 e, na verdade, estou tendo algum problema com o módulo webdav.

Se eu tentar acessar uma conta do webdav, ela funciona, mas se eu tentar listar meu diretório atual, recebo um erro 405.

Eu sei algumas configurações como mudança com esta nova versão, eu fiz algumas alterações para obter o meu virtualhost compatível com 2.4.

Eu tenho 2 virtualhost atualmente todos estes são provenientes da minha configuração 2.2, eu atualizei-os um pouco para estar pronto com 2.4. Um deles funciona bem com o webdav, mas o segundo gera um 405 no diretório de listagem.

Aqui está o meu virtualhost que está trabalhando :

Log do Apache:

10.19.87.87 - maxence [02/Jan/2015:16:30:12 +0100] "PROPFIND / HTTP/1.1" 207 6331 "-" "Cyberduck/4.6.1 (16121) (Windows 7/6.1) (x86)"
    <VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /home/web/working/dev/

    ServerName webdav.working.test.net
    ServerAlias webdav.working.test.net

    ErrorLog /var/log/apache2/net.test.working.webdav-error.log
    CustomLog /var/log/apache2/net.test.working.webdav-access.log combined

    <Files ".ht*">
        allow from all
    </Files>

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    <Location />
        DAV on
        AuthName "test WebDAV Storage - working"
        AuthType Basic
        AuthUserFile /etc/apache2/htpasswd-webdav
        <Limit GET POST PUT DELETE PROPFIND PROPPATCH MKCOL COPY DUPLICATE MOVE LOCK UNLOCK OPTIONS HEAD>
        Require valid-user
        </Limit>
        AddType text/html .php .phtml
    </Location>

</Virtualhost>

E agora, aquele que não está trabalhando :

Log do Apache:

10.19.87.87 - maxence [02/Jan/2015:16:10:54 +0100] "PROPFIND / HTTP/1.1" 405 475 "-" "Cyberduck/4.6.1 (16121) (Windows 7/6.1) (x86)"
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /home/web/notworking/dev/

    ServerName webdav.notworking.test.net
    ServerAlias webdav.notworking.test.net

    ErrorLog /var/log/apache2/net.test.notworking.webdav-error.log
    CustomLog /var/log/apache2/net.test.notworking.webdav-access.log combined

    <Files ".ht*">
        allow from all
    </Files>

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    <Location />
        DAV on
        AuthName "test WebDAV Storage - notworking"
        AuthType Basic
        AuthUserFile /etc/apache2/htpasswd-webdav
        <Limit GET POST PUT DELETE PROPFIND PROPPATCH MKCOL COPY DUPLICATE MOVE LOCK UNLOCK OPTIONS HEAD>
        Require valid-user
        </Limit>
        AddType text/html .php .phtml
    </Location>

</Virtualhost>

Como você pode ver, minha configuração de DAV é exatamente a mesma. Pastas rigth tem a mesma configuração:

 drwxr-xr-x 7 www-data www-data      26 déc.  24 12:07 dev

Se alguém tiver alguma pista para saber por que não consigo listar meu diretório, isso me ajudará bastante:)

    
por Maxence 02.01.2015 / 16:38

2 respostas

8

Parece haver um monte de pessoas que passaram por este problema após a última atualização.

Encontrei minha resposta aqui : no Dav em diretórios, desative os recursos de índice do diretório com a seguinte diretiva:

DirectoryIndex disabled

De nota: um dos sites que eu administrei foi desfigurado em 7 de janeiro através de um ataque php "Hmei7" em antigas cópias do wordpress que eu tinha colocado em um lugar acessível e esquecido. Não deixe aplicativos antigos baseados em php em lugares visíveis!

    
por 17.01.2015 / 11:23
0

Como o ThBB já apontou, o DirectoryIndex é o problema, porque o script de índice receberá a requisição HTTP e não irá tratá-la.

No meu caso, eu preciso do recurso de índice, porque eu tenho um aplicativo da web no diretório de destino. Eu tenho um script de implantação que exclui o diretório, cria-o novamente e, em seguida, carrega todos os arquivos. Para manter meu script de implantação trabalhando em conjunto com DirectoryIndex , simplesmente tive que fazer uma solicitação adicional DELETE para o arquivo de índice antes da solicitação DELETE para o diretório que contém:

DELETE /my-app/index.html
DELETE /my-app
MKCOL /my-app
POST /my-app/index.html
POST /my-app/foo.bar
... all other files ...
    
por 25.10.2018 / 13:23