PHPackages                             eltharin/webdav - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. eltharin/webdav

ActiveSymfony-bundle

eltharin/webdav
===============

WebDav Bundle for symfony

V1.1.0(1y ago)3131GPL-3.0PHP

Since Mar 30Pushed 1y ago1 watchersCompare

[ Source](https://github.com/eltharin/webdav)[ Packagist](https://packagist.org/packages/eltharin/webdav)[ RSS](/packages/eltharin-webdav/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (4)Used By (0)

Symfony WebDav Bundle
=====================

[](#symfony-webdav-bundle)

[![Latest Stable Version](https://camo.githubusercontent.com/a07fe9b1237fd50d3330121968a69e43bf6383344f10e2ef574e9bc6c25c275d/687474703a2f2f706f7365722e707567782e6f72672f656c74686172696e2f7765626461762f76)](https://packagist.org/packages/eltharin/webdav)[![Total Downloads](https://camo.githubusercontent.com/c4c7c98b4612c84e20cb7741056479cba5c2474e74d822998028ac2c3a5b815d/687474703a2f2f706f7365722e707567782e6f72672f656c74686172696e2f7765626461762f646f776e6c6f616473)](https://packagist.org/packages/eltharin/webdav)[![Latest Unstable Version](https://camo.githubusercontent.com/4ab21fc1405f6efbfd4df3a618a441fd30e8fd5db80d863eab6eee188d7746db/687474703a2f2f706f7365722e707567782e6f72672f656c74686172696e2f7765626461762f762f756e737461626c65)](https://packagist.org/packages/eltharin/webdav)[![License](https://camo.githubusercontent.com/4baa980797353f5897066fa13ce7e27b7f3c98feae2c471a0ecb769daa9c2e20/687474703a2f2f706f7365722e707567782e6f72672f656c74686172696e2f7765626461762f6c6963656e7365)](https://packagist.org/packages/eltharin/webdav)

What is WebDav Bundle?
----------------------

[](#what-is-webdav-bundle)

This bundle allow to create a webdav server running in your symfony application, you can use same credentials and have the same ACL logic.

Installation
------------

[](#installation)

- Require the bundle with composer:

```
composer require eltharin/webdav
```

and then add a file for add the routes loader :

```
eltharin_webdav:
    resource: Eltharin\WebdavBundle\Routing\Loader
    type: service
```

this file can be found in /vendor/eltharin/webdav/config/routes and put in /config/routes

If you want enable Basic Authenticator for at less one of your configurations, you have to add a firewall in your security.yaml :

```
webdav:
    request_matcher: Eltharin\WebdavBundle\Security\WebdavRequestMatcher
    custom_authenticator: Eltharin\WebdavBundle\Security\WebdavAuthenticator
    entry_point: Eltharin\WebdavBundle\Security\WebdavAuthenticationEntryPoint
```

Configuration
-------------

[](#configuration)

- Create a configuration, for one webdav space, you can have as configurations you want, each have to start by only one start :

Start creating PHP Classe whitch extends Eltharin\\WebdavBundle\\Interface\\AbstractWebDavConfiguration you have two stubs to implements, getRouteData and getFileManager :

```
class WebDavConfiguration extends AbstractWebDavConfiguration
{
    public function getRouteData(): RouteData
    {
        // TODO: Implement getRouteData() method.
    }

    public function getFileManager(): FileManagerInterface
    {
        // TODO: Implement getFileManager() method.
    }
}
```

RouteData is an object represents the route used to obtain this webdav endpoint. It seems the basic symfony route configuration, you must set the path to access this endpoint, and you can set requirement too.

The webdav file path will be set a the end of this string, don't call your variables path.

```
    public function getRouteData(): RouteData
    {
        return new RouteData('/webdav');
    }
```

or

```
    public function getRouteData(): RouteData
    {
        return new RouteData('/webdav/{uuid}', ['uuid' => '\d+']);
    }
```

the generated routes will be /webdav/{path} and /webdav/{uuid}/path where path will be .\*, path can contain / caracter for subfolders.

There is one fileManager for storing files on disk, root folder is configurable for this example %root%/var/data/ create this directory and add fileManager configuration :

```
    public function getFileManager(): FileManagerInterface
    {
        $fileManager = new WebDavFileManager();
        $fileManager->setConfig($this->appKernel->getProjectDir() . DIRECTORY_SEPARATOR . 'var' . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR,
            $this->requestStack->getMainRequest()?->getSchemeAndHttpHost() ?? '' ,
            '/' . $this->getRouteData()->getPath());
        return $fileManager;
    }
```

and we have our configuration :

```
use Eltharin\WebdavBundle\FileManager\WebDavFileManager;
use Eltharin\WebdavBundle\Interface\AbstractWebDavConfiguration;
use Eltharin\WebdavBundle\Interface\FileManagerInterface;
use Eltharin\WebdavBundle\Routing\RouteData;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\KernelInterface;

class WebDavConfiguration extends AbstractWebDavConfiguration
{
    public function __construct(private KernelInterface $appKernel, private RequestStack $requestStack)
    {
    }

    public function getRouteData(): RouteData
    {
        return new RouteData('/webdav');
    }

    public function getFileManager(): FileManagerInterface
    {
        $fileManager = new WebDavFileManager();
        $fileManager->setConfig($this->appKernel->getProjectDir() . DIRECTORY_SEPARATOR . 'var' . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR,
            $this->requestStack->getMainRequest()?->getSchemeAndHttpHost() ?? '' ,
            $this->getRouteData()->getPath()
        );
        return $fileManager;
    }
}
```

Add more security
-----------------

[](#add-more-security)

for add security, WebDAv bundle include Authenticator and EntryPoint for Basic Authentication, verify you have add the firewall as say in installation part.

in your configuration where you want add security, you must add the security manager in the construct function for fill $securityManager variable:

```
public function __construct(private KernelInterface $appKernel, private RequestStack $requestStack, BasicAuthManager $authManager)
{
    $this->securityManager = $authManager;
}
```

and add an access\_control item in your security.yaml file :

```
access_control:
    - { path: ^/webdav, roles: ROLE_USER }
```

Now you must be connected with ROLE\_USER to access your files.

If you want more security levels, you can extends WebDavFileManager Class and implements the checkAutorization function or write your own class.

TODO:
-----

[](#todo)

- DB File Manager
- CalDav CardDav

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance46

Moderate activity, may be stable

Popularity10

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 80% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~180 days

Total

3

Last Release

416d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/fff318a46a2e2f50b3a9fb70ee232f3dc317397c0b9dea4f0ed8ac37160dc471?d=identicon)[eltharin](/maintainers/eltharin)

---

Top Contributors

[![eltharin](https://avatars.githubusercontent.com/u/7547802?v=4)](https://github.com/eltharin "eltharin (4 commits)")[![connorhu](https://avatars.githubusercontent.com/u/1845575?v=4)](https://github.com/connorhu "connorhu (1 commits)")

---

Tags

symfonybundlewebWebDAV

### Embed Badge

![Health badge](/badges/eltharin-webdav/health.svg)

```
[![Health](https://phpackages.com/badges/eltharin-webdav/health.svg)](https://phpackages.com/packages/eltharin-webdav)
```

###  Alternatives

[spomky-labs/web-push

Web-Push framework for PHP

281.8k](/packages/spomky-labs-web-push)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
