Skip to content

davis does not work with with php 8.4+ because of the imap removal from core #195

@Ramblurr

Description

@Ramblurr

Update

Future bug divers, here is the comment explaining the issue: #195 (comment)


  • Last known working version: 4.4.3
  • Current version: 5.0.2

Problem

DavX on my android devices are failing to sync calendars and address books, while Thunderbird for the same user and resources, is working fine.

I use imap authentication, and I've double checked that my auth details are correct in DavX.

Call to undefined function Sabre\DAV\Auth\Backend\imap_open()

Here is the debug info from davx (slightly redacted)
--- BEGIN DEBUG INFO ---

NOTIFICATION TIME
Local time: 2025-05-06T15:42:48+02:00
UTC: 2025-05-06T13:42:48Z

SYNCHRONIZATION INFO
Account: Account {name=user@mydomain.com, type=bitfire.at.davdroid}
Authority: com.android.calendar

EXCEPTION
at.bitfire.dav4jvm.exception.HttpException: HTTP 500 Internal Server Error
        at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:3)
        at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:1)
        at at.bitfire.dav4jvm.DavResource.processMultiStatus(DavResource.kt:2)
        at at.bitfire.dav4jvm.DavResource.propfind(DavResource.kt:77)
        at at.bitfire.davdroid.sync.CalendarSyncManager.queryCapabilities$lambda$3(CalendarSyncManager.kt:30)
        at at.bitfire.davdroid.sync.CalendarSyncManager.$r8$lambda$WgZpb3kEDaQ7fxdsisoeL5kAHSU(CalendarSyncManager.kt:1)
        at at.bitfire.davdroid.sync.CalendarSyncManager$$ExternalSyntheticLambda8.invoke(R8$$SyntheticClass:3)
        at at.bitfire.davdroid.sync.SyncException$Companion.wrapWithRemoteResource(SyncException.kt:6)
        at at.bitfire.davdroid.sync.CalendarSyncManager.queryCapabilities(CalendarSyncManager.kt:16)
        at at.bitfire.davdroid.sync.SyncManager.performSync(SyncManager.kt:70)
        at at.bitfire.davdroid.sync.CalendarSyncer.syncCollection(CalendarSyncer.kt:10)
        at at.bitfire.davdroid.sync.CalendarSyncer.syncCollection(CalendarSyncer.kt:1)
        at at.bitfire.davdroid.sync.Syncer.syncCollectionContents$davx5_ose_4_4_9_oseRelease(Syncer.kt:44)
        at at.bitfire.davdroid.sync.Syncer.sync$davx5_ose_4_4_9_oseRelease(Syncer.kt:42)
        at at.bitfire.davdroid.sync.Syncer.invoke(Syncer.kt:144)
        at at.bitfire.davdroid.sync.worker.BaseSyncWorker$doSyncWork$2.invokeSuspend$lambda$0(BaseSyncWorker.kt:1)
        at at.bitfire.davdroid.sync.worker.BaseSyncWorker$doSyncWork$2.$r8$lambda$MnrEU1_WtQZTTPjmMRztfG3Y7fo(BaseSyncWorker.kt:1)
        at at.bitfire.davdroid.sync.worker.BaseSyncWorker$doSyncWork$2$$ExternalSyntheticLambda0.invoke(R8$$SyntheticClass:3)
        at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:58)
        at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Interruptible.kt:13)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:17)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:45)
        at kotlinx.coroutines.InterruptibleKt.runInterruptible$default(Interruptible.kt:9)
        at at.bitfire.davdroid.sync.worker.BaseSyncWorker$doSyncWork$2.invokeSuspend(BaseSyncWorker.kt:332)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:9)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:115)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)
HTTP REQUEST
Request{method=PROPFIND, url=https://dav.mydomain.com/dav/calendars/user@mydomain.com/default/, headers=[Depth:0, User-Agent:DAVx5/4.4.9-ose (dav4jvm; okhttp/4.12.0) Android/15, Accept-Language:en-US, en;q=0.7, *;q=0.5, Accept-Encoding:br,gzip, Authorization:Basic redactedQ==]}
<?xml version='1.0' encoding='UTF-8' ?><propfind xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav" xmlns:CARD="urn:ietf:params:xml:ns:carddav"><prop><CAL:max-resource-size /><supported-report-set /><n0:getctag xmlns:n0="http://calendarserver.org/ns/" /><sync-token /></prop></propfind>

HTTP RESPONSE
Response{protocol=http/1.1, code=500, message=Internal Server Error, url=https://dav.mydomain.com/dav/calendars/user@mydomain.com/default/}
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
  <s:sabredav-version>4.6.0</s:sabredav-version>
  <s:exception>Error</s:exception>
  <s:message>Call to undefined function Sabre\DAV\Auth\Backend\imap_open()</s:message>
</d:error>


REMOTE RESOURCE
https://dav.mydomain.com/dav/calendars/user@mydomain.com/default/

SOFTWARE INFORMATION

┌─────────────────────────────────────────┬─────────────────────────────────────────────────┬────────────┬─────────────────────┬───────┐
│ Package                                 │ Version                                         │ Code       │ Installer           │ Notes │
├─────────────────────────────────────────┼─────────────────────────────────────────────────┼────────────┼─────────────────────┼───────┤
│ at.bitfire.davdroid                     │ 4.4.9-ose                                       │ 404090001  │ org.fdroid.fdroid   │       │
│ com.android.providers.contacts          │ 15                                              │ 35         │ —                   │       │
│ com.android.providers.calendar          │ 15                                              │ 35         │ —                   │       │
│ com.google.android.calendar             │ 2025.16.0-749613736-release                     │ 2017747407 │ com.android.vending │       │
│ ws.xsoh.etar                            │ 1.0.48                                          │ 48         │ org.fdroid.fdroid   │       │
│ com.google.android.apps.messaging       │ messages.android_20250422_03_RC01.phone_dynamic │ 276717063  │ com.android.vending │       │
│ com.google.android.googlequicksearchbox │ 16.16.43.sa.arm64                               │ 301507779  │ com.android.vending │       │
└─────────────────────────────────────────┴─────────────────────────────────────────────────┴────────────┴─────────────────────┴───────┘
SYSTEM INFORMATION

Android version: 15 

Here are davis logs
[2025-05-06T16:10:50.246235+02:00] request.INFO: Matched route "dav". {"route":"dav","route_parameters":{"_route":"dav","_controller":"App\\Controller\\DAVController::dav","path":"calendars/user@mydomain.com/default/"},"request_uri":"https://dav.mydomain.com/dav/calendars/user@mydomain.com/default/","method":"PROPFIND"} []
[2025-05-06T16:10:50.264559+02:00] security.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-05-06T16:10:50.264577+02:00] security.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"App\\Security\\LoginFormAuthenticator"} []
[2025-05-06T16:10:50.264583+02:00] security.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"App\\Security\\LoginFormAuthenticator"} []
[2025-05-06T16:10:50.382168+02:00] app.ERROR: [500]: Error - Call to undefined function Sabre\DAV\Auth\Backend\imap_open() [{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/src/Services/IMAPAuth.php","line":54,"function":"imapOpen","class":"Sabre\\DAV\\Auth\\Backend\\IMAP","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Auth/Backend/IMAP.php","line":80,"function":"imapOpen","class":"App\\Services\\IMAPAuth","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php","line":103,"function":"validateUserPass","class":"Sabre\\DAV\\Auth\\Backend\\IMAP","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Auth/Plugin.php","line":179,"function":"check","class":"Sabre\\DAV\\Auth\\Backend\\AbstractBasic","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Auth/Plugin.php","line":135,"function":"check","class":"Sabre\\DAV\\Auth\\Plugin","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMethod","class":"Sabre\\DAV\\Auth\\Plugin","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Server.php","line":456,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Server.php","line":253,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/src/Controller/DAVController.php","line":332,"function":"start","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/symfony/http-kernel/HttpKernel.php","line":178,"function":"dav","class":"App\\Controller\\DAVController","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/symfony/http-kernel/HttpKernel.php","line":76,"function":"handleRaw","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/symfony/http-kernel/Kernel.php","line":185,"function":"handle","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/public/index.php","line":33,"function":"handle","class":"Symfony\\Component\\HttpKernel\\Kernel","type":"->"}] []
[2025-05-06T16:10:50.566516+02:00] request.INFO: Matched route "dav". {"route":"dav","route_parameters":{"_route":"dav","_controller":"App\\Controller\\DAVController::dav","path":"addressbooks/user@mydomain.com/default/"},"request_uri":"https://dav.mydomain.com/dav/addressbooks/user@mydomain.com/default/","method":"PROPFIND"} []
[2025-05-06T16:10:50.567157+02:00] security.DEBUG: Checking for authenticator support. {"firewall_name":"main","authenticators":1} []
[2025-05-06T16:10:50.567171+02:00] security.DEBUG: Checking support on authenticator. {"firewall_name":"main","authenticator":"App\\Security\\LoginFormAuthenticator"} []
[2025-05-06T16:10:50.567178+02:00] security.DEBUG: Authenticator does not support the request. {"firewall_name":"main","authenticator":"App\\Security\\LoginFormAuthenticator"} []
[2025-05-06T16:10:50.572390+02:00] app.ERROR: [500]: Error - Call to undefined function Sabre\DAV\Auth\Backend\imap_open() [{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/src/Services/IMAPAuth.php","line":54,"function":"imapOpen","class":"Sabre\\DAV\\Auth\\Backend\\IMAP","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Auth/Backend/IMAP.php","line":80,"function":"imapOpen","class":"App\\Services\\IMAPAuth","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php","line":103,"function":"validateUserPass","class":"Sabre\\DAV\\Auth\\Backend\\IMAP","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Auth/Plugin.php","line":179,"function":"check","class":"Sabre\\DAV\\Auth\\Backend\\AbstractBasic","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Auth/Plugin.php","line":135,"function":"check","class":"Sabre\\DAV\\Auth\\Plugin","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMethod","class":"Sabre\\DAV\\Auth\\Plugin","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Server.php","line":456,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/sabre/dav/lib/DAV/Server.php","line":253,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/src/Controller/DAVController.php","line":332,"function":"start","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/symfony/http-kernel/HttpKernel.php","line":178,"function":"dav","class":"App\\Controller\\DAVController","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/symfony/http-kernel/HttpKernel.php","line":76,"function":"handleRaw","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/vendor/symfony/http-kernel/Kernel.php","line":185,"function":"handle","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->"},{"file":"/nix/store/679xdyqr4dp3hrxfhfwykghhhbkrs4pp-davis-5.0.2/public/index.php","line":33,"function":"handle","class":"Symfony\\Component\\HttpKernel\\Kernel","type":"->"}] []

Meanwhile my nginx logs show this:

{"time": "2025-05-06T15:54:12+02:00","remote_addr": "","x_forwarded_for": "10.9.6.17","remote_user": "user@mydomain.com","bytes_sent": 596,"request_time": 0.013,"status": 500,"vhost": "dav.mydomain.com","request_proto": "HTTP/1.1","path": "/index.php","request_query": "","request_length": 791,"duration": 0.013,"method": "PROPFIND","http_referrer": "","http_user_agent": "DAVx5/4.4.9-ose (dav4jvm; okhttp/4.12.0) Android/15","upstream_addr": "unix:/run/phpfpm/davis.sock"}

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdependency bugBug linked to a dependency

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions