Panel Installation " Missing handler for type: "dav" "

Hi there,

i want to update to Kirby 3 and copied the raw data to my FTP folder. I want to install/activate the panel online and already set the option ‘panel’ =>[‘install’ => true].

Unfortnatly after entering a login-email and password the panel tells me:

Missing handler for type: “dav”

Someone have an idea about the Error?

The error is thrown by the data class. Default data handlers are json, php, txt and yaml. No idea where dav comes from. Could you please post the complete config?

What Kirby version do you want to update from?

I explain the enviroment of the update:

I have the adress www.test.de with the matching “/” folder at my FTP. There kirby v2 is running and untouched.

I bought a second adress www.mytest.org with the “/testorg/kirby” folder at the same hoster. Into this folder I copied the new Kirby v3 files. I want to edit the new page without any changes at the running Kirby v2 and - if finished - just replace the files.

Which config file you want to see?

The config of the new Kirby 3 installation.

What is that? A fresh Starterkit or with your content already added?

Does the frontend run, including subpages? Does the server meet the Kirby 3 requirements regarding PHP version etc?

I use the Kirby v3 Starterkit, without any custom content (untouched).

The main Page is running. The new website is at PHP “7.72 STABLE-STANDARD”. The Subpages of the Starterkit give a Error500… I did not checked that up to now.

The config.php:

<?php return [ 'debug' => true, 'panel' =>[ 'install' => true ] ];

Ok, then there is some misconfiguration going on and we have to get that working first. Have you made sure to upload the .htaccess file (if it is an Apache server)? Are htaccess overrides allowed? Is rewriting enabled?

If the answers to the above are “Yes”, then you might have to set the RewriteBase in the .htacess.

.htaccess is at its place :slight_smile: I use Notepad++ to create it, because Windows dont like files without characters before the dot.

This are the first 3 lines of RewriteBase:

RewriteEngine on
RewriteBase /testorg/kirby/
AddDefaultCharset utf-8

If I change the folder, the whole website crashes, so i think it is good.

The RewriteBase of my actual side has:

RewriteBase /

because its installed at root directory.


At the working website i have this three lines addet to .htaccess:

#make panel links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^panel/(.*) panel/index.php [L]

Do i need them for the new one to?

You need the origin .htaccess that comes with the Starterkit. It is different from the Kirby 2 htaccess.

And if you use the new domain and point that to the folder, your RewriteBase should probably also be

RewriteBase /

and not the folder names and probably in any case not have kirby in the path, unless the folder in which your project lives is actually /testorg/kirby`-

I copied again the content of .htacess from github into my file.

If i just let as is is, the main side is good, sub-pages and /panel failed with Error500.
If i change the RewriteBase to /testorg/kirby the same.
If i change the RewriteBase to “/testorg/kirby`-” the same.

Then i renamed the folder to /testorg/testkrib - maybe the folder name “kirby” is a problem, but it did not changed the error.

Then i just copied the .htaccess of my KirbyV2 and both works: SubPages and Panel.

But1: SubPages are going into the Kirby-Debugger with Error:

Class ‘Parsedown’ not found

Line 68 of Markdown.php

But2: Error "Missing handler for type: “dav” " at panels installation.


The content of my KirbyV2 htaccess is:

RewriteBase /
AddDefaultCharset utf-8
AddType application/x-font-woff .woff

ExpiresActive On
ExpiresDefault “access plus 1 week”
ExpiresByType image/jpeg “access plus 1 month”
ExpiresByType image/x-icon “access plus 1 month”
ExpiresByType image/jpg “access plus 1 month”
ExpiresByType image/png “access plus 1 month”
ExpiresByType image/gif “access plus 1 month”
ExpiresByType text/css “access plus 1 month”
ExpiresByType text/javascript “access plus 1 month”
ExpiresByType application/x-javascript “access plus 1 month”
ExpiresByType text/html “access plus 1 week”
ExpiresByType application/xhtml+xml “access plus 1 week”
< /IfModule>
< IfModule mod_deflate.c>
< FilesMatch ".(jpg|jpeg|gif|png)"> SetOutputFilter DEFLATE < /FilesMatch> AddOutputFilterByType DEFLATE text/plain text/html text/xml AddOutputFilterByType DEFLATE text/css text/javascript AddOutputFilterByType DEFLATE application/xml application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript application/x-javascript < /IfModule> < IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^content/(.*)\.(txt|md|mdown) index.php [L]
RewriteRule ^site/(.) index.php [L]
RewriteRule ^kirby/(.
) index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^panel/(.) panel/index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.
) index.php [L]
< /IfModule>

Did you test what I said, use the original Kirby 3 htaccess and set RewriteBase to /?

Yes, sorry forgott to write the Error:

Class ‘Parsedown’ not found

at SubPages and

Missing handler for type: “dav”

on panel installation.

I will now reinstall kirby and try tomorrow again.

The lastest .zip file i downloaded some minutes ago is newer than the one i used to install.

Maybe a very tiny bug is then repaired :upside_down_face:

Ok, here we go again. The Problem is not finally solved, but i had some partial sucess.

After reinstall/re-upload the Kirby v3 Starterkit the Error500 remained. After activating the “RewriteBase /” at .htaccess the sub-pages and the panel-installation startet. Now i can hard-code something but at the second try (after sucess with Kirby v2) i want to use the panel.


First Error was “Invalid CSRF token” - searched some at the forum, installed Chrome, used hard-reload and now i have the same as before:

" Missing handler for type: “dav” "

Any ideas? Is it possibile to view the debugger during the time i click on “install” (at the panel) and the moment the error appears?

€dit: My Kirby only creates one “.sess” file per access. Someone had 1000s of them, my PHP creates only one per Session as it should.

What is the response you get, see this thread: Can not log in to panel - Invalid CSRF token

Also, could you pleae post your PHP info?

After learning how to make this nice kind of file i had attached it as picture. If you want the .html file let me know.

After learning how to get the HTTP Response I now know that I have Error400 :bulb:

  1. {status: “error”, message: “Invalid CSRF token”, code: 400, exception: “Kirby\Exception\InvalidArgumentException”, key: “error.invalidArgument”, …}

  2. status: “error”

  3. message: “Invalid CSRF token”

  4. code: 400

  5. exception: “Kirby\Exception\InvalidArgumentException”

  6. key: “error.invalidArgument”

  7. file: “/kirby/config/api/routes/system.php”

  8. line: 52

  9. details: Array(0)

1. length: 0
2. __ob__: Tt {value: Array(0), dep: gt, vmCount: 0}
3. __proto__: Array
  1. route: “system/install”
  2. proto:
1. constructor: ƒ Object()
2. __defineGetter__: ƒ __defineGetter__()
3. __defineSetter__: ƒ __defineSetter__()
4. hasOwnProperty: ƒ hasOwnProperty()
5. __lookupGetter__: ƒ __lookupGetter__()
6. __lookupSetter__: ƒ __lookupSetter__()
7. isPrototypeOf: ƒ isPrototypeOf()
8. propertyIsEnumerable: ƒ propertyIsEnumerable()
9. toString: ƒ toString()
10. valueOf: ƒ valueOf()
11. toLocaleString: ƒ toLocaleString()
12. get __proto__: ƒ __proto__()
13. set __proto__: ƒ __proto__()

Error400 is at “CSFR Token…”. If the “dav”-Error appears there is HTTP Error 500:

  1. {status: “error”, message: “Missing handler for type: “dav””, code: 500, exception: “Exception”, key: null, …}

  2. status: “error”

  3. message: “Missing handler for type: “dav””

  4. code: 500

  5. exception: “Exception”

  6. key: null

  7. file: “/kirby/src/Data/Data.php”

  8. line: 70

  9. details: Array(0)

1. length: 0
2. __ob__: Tt {value: Array(0), dep: gt, vmCount: 0}
3. __proto__: Array
  1. route: “system/install”
  2. proto:
1. constructor: ƒ Object()
2. __defineGetter__: ƒ __defineGetter__()
3. __defineSetter__: ƒ __defineSetter__()
4. hasOwnProperty: ƒ hasOwnProperty()
5. __lookupGetter__: ƒ __lookupGetter__()
6. __lookupSetter__: ƒ __lookupSetter__()
7. isPrototypeOf: ƒ isPrototypeOf()
8. propertyIsEnumerable: ƒ propertyIsEnumerable()
9. toString: ƒ toString()
10. valueOf: ƒ valueOf()
11. toLocaleString: ƒ toLocaleString()
12. get __proto__: ƒ __proto__()
13. set __proto__: ƒ __proto__()

Hm, the phpinfo looks ok to me. Is that 1&1 hosting?

No, my hoster is DomainFactory.

Could you send me the link to the domain, you can do that via PM if you don’t want to post it publicly.