7

I just upgraded my test machine from Apache 2.2.29 to 2.4.10 and actually Im getting some issue with webdav module.

If I try to login to a webdav account it works but if I try to list my current directory I got a 405 error.

I know some config as change with this new version, I did some change to get my virtualhost compatible with 2.4.

I got 2 virtualhost actualy all of these are come from my 2.2 setup, I updated them a bit to be ready with 2.4. One of them works fine with webdav but the second one generate a 405 on listing directory.

Here is my virtualhost who is working:

Apache log :

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 info@test.com
    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>

And now, the one who is not working :

Apache Log :

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 info@test.com
    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>

As you can see my DAV config are exactly the same. Folders rigth got same configuration :

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

If someone got any clue to know why I can't list my directory, it'll help me a lot :)

0

2 Answers 2

13

There seems to be a bunch of people who have come accross this issue after the last update.

I found my answer here: on the Dav on directories, disable the Directory index features with the following directive:

DirectoryIndex disabled

Of note: one of the websites I manage was defaced on January 7th through an "Hmei7" php attack on old copies of wordpress I had placed in an accessible place and forgotten about. Don't leave old php-based apps lurking around at visible places!

1
  • Your answer fixed the problem thanks :) (long version) It's never too late, almost 2 years ago, I planned to try again to pass to 2.4 and found this post, my post with your answer.
    – Maxence
    Nov 16, 2016 at 16:50
1

As ThBB already pointed out, the DirectoryIndex is the problem, because the index script will receive the HTTP request and won't handle it.

In my case I need the index-feature, because I have a web app in the target directory. I have a deployment script which deletes the directory, creates it again and then uploads all files. To keep my deployment script working together with DirectoryIndex I simply had to place an additionaly DELETE request for the index file before the DELETE request for the containing directory:

DELETE /my-app/index.html
DELETE /my-app
MKCOL /my-app
POST /my-app/index.html
POST /my-app/foo.bar
... all other files ...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.