How to best fix "WebP exif parsing fails due to bad composer autoload"-Error

This is my first time using Nextcloud for more than some testing and I just installed the latest version not much thinking about it. And it seems like version 33 has some kinks to work out.

My issue is mentioned in 500 error: WebP exif parsing fails due to bad composer autoload · Issue #3425 · nextcloud/photos · GitHub , but I’m not versed enough in how Nextcloud works yet. So I’m not able to figure out a temporary solution.

I would appreciate some help / guidance, so I can fix this locally, since it doesn’t seem like there is anybody working on this yet. At least nobody mentioned that in the Github issue.

The Basics

  • Nextcloud Server version (e.g., 29.x.x):
    • 33.0.0
  • Operating system and version (e.g., Ubuntu 24.04):
    • Linux 6.12.33-production+truenas x86_64
  • Web server and version (e.g, Apache 2.4.25):
    • nginx/1.29.6
  • Reverse proxy and version _(e.g. nginx 1.27.2)
    • nginx-proxy-manager 1.3.3 (not relevant)
  • PHP version (e.g, 8.3):
    • 8.4.18
  • Is this the first time you’ve seen this error? (Yes / No):
    • No
  • When did this problem seem to first start?
    • Every time you upload a web
  • Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
    • Docker (TrueNas package)
  • Are you using CloudfIare, mod_security, or similar? (Yes / No)
    • Yes

Summary of the issue you are facing:

I have a library with some webp images, and every time I upload another one I’m getting this error - but no data is lost despite it saying the files can’t be synced. But the error’s are pretty annoying.

Steps to replicate it (hint: details matter!):

  1. Upload an webp image

  2. Get an error in the webui or desktop client that the upload failed, because of a server error (but upload is there)

Log entries

Nextcloud

The following log is copied from “no app in context”:

{"reqId":"Tu1dgD7brNl7ni3rKqNs","level":3,"time":"2026-03-21T09:42:04+00:00","remoteAddr":"172.16.8.6","user":"Agrarvolution","app":"no app in context","method":"PUT","url":"/remote.php/dav/files/Agrarvolution/Test/test.webp","scriptName":"/remote.php","message":"Uncaught exception","userAgent":"Mozilla/5.0 (Windows) mirall/4.0.8 (build 20260319) (Nextcloud, windows-10.0.26200 ClientArchitecture: x86_64 OsArchitecture: x86_64)","version":"33.0.0.16","clientReqId":"d4778a93-6e5b-4fb8-9010-a1ff5a7171dc","exception":{"Exception":"Error","Message":"Class \"WoltLab\\WebpExif\\ChunkType\" not found","Code":0,"Trace":[{"file":"/var/www/html/apps/photos/lib/Listener/ExifMetadataProvider.php","line":180,"function":"decodeChunk","class":"WoltLab\\WebpExif\\Decoder","type":"->","args":[{"__class__":"Nelexa\\Buffer\\ResourceBuffer@anonymous\u0000/var/www/html/apps/photos/lib/Listener/ExifMetadataProvider.php:140$142"}]},{"file":"/var/www/html/apps/photos/lib/Listener/ExifMetadataProvider.php","line":82,"function":"getExifFromWebP","class":"OCA\\Photos\\Listener\\ExifMetadataProvider","type":"->","args":[null]},{"file":"/var/www/html/lib/private/EventDispatcher/ServiceEventListener.php","line":57,"function":"handle","class":"OCA\\Photos\\Listener\\ExifMetadataProvider","type":"->","args":[{"__class__":"OCP\\FilesMetadata\\Event\\MetadataLiveEvent"}]},{"file":"/var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":220,"function":"__invoke","class":"OC\\EventDispatcher\\ServiceEventListener","type":"->","args":[{"__class__":"OCP\\FilesMetadata\\Event\\MetadataLiveEvent"},"OCP\\FilesMetadata\\Event\\MetadataLiveEvent",{"__class__":"Symfony\\Component\\EventDispatcher\\EventDispatcher"}]},{"file":"/var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":56,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->","args":[[{"__class__":"Closure"},{"__class__":"Closure"},{"__class__":"Closure"},{"__class__":"Closure"},{"__class__":"Closure"}],"OCP\\FilesMetadata\\Event\\MetadataLiveEvent",{"__class__":"OCP\\FilesMetadata\\Event\\MetadataLiveEvent"}]},{"file":"/var/www/html/lib/private/EventDispatcher/EventDispatcher.php","line":67,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->","args":[{"__class__":"OCP\\FilesMetadata\\Event\\MetadataLiveEvent"},"OCP\\FilesMetadata\\Event\\MetadataLiveEvent"]},{"file":"/var/www/html/lib/private/EventDispatcher/EventDispatcher.php","line":79,"function":"dispatch","class":"OC\\EventDispatcher\\EventDispatcher","type":"->","args":["OCP\\FilesMetadata\\Event\\MetadataLiveEvent",{"__class__":"OCP\\FilesMetadata\\Event\\MetadataLiveEvent"}]},{"file":"/var/www/html/lib/private/FilesMetadata/FilesMetadataManager.php","line":100,"function":"dispatchTyped","class":"OC\\EventDispatcher\\EventDispatcher","type":"->","args":[{"__class__":"OCP\\FilesMetadata\\Event\\MetadataLiveEvent"}]},{"file":"/var/www/html/lib/private/FilesMetadata/Listener/MetadataUpdate.php","line":42,"function":"refreshMetadata","class":"OC\\FilesMetadata\\FilesMetadataManager","type":"->","args":[{"__class__":"OC\\Files\\Node\\File"}]},{"file":"/var/www/html/lib/private/EventDispatcher/ServiceEventListener.php","line":57,"function":"handle","class":"OC\\FilesMetadata\\Listener\\MetadataUpdate","type":"->","args":[{"__class__":"OCP\\Files\\Events\\Node\\NodeWrittenEvent"}]},{"file":"/var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":220,"function":"__invoke","class":"OC\\EventDispatcher\\ServiceEventListener","type":"->","args":[{"__class__":"OCP\\Files\\Events\\Node\\NodeWrittenEvent"},"OCP\\Files\\Events\\Node\\NodeWrittenEvent",{"__class__":"Symfony\\Component\\EventDispatcher\\EventDispatcher"}]},{"file":"/var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":56,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->","args":[[{"__class__":"Closure"},{"__class__":"Closure"},{"__class__":"Closure"},{"__class__":"Closure"},{"__class__":"Closure"},"And 2 more entries, set log level to debug to see all entries"],"OCP\\Files\\Events\\Node\\NodeWrittenEvent",{"__class__":"OCP\\Files\\Events\\Node\\NodeWrittenEvent"}]},{"file":"/var/www/html/lib/private/EventDispatcher/EventDispatcher.php","line":67,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->","args":[{"__class__":"OCP\\Files\\Events\\Node\\NodeWrittenEvent"},"OCP\\Files\\Events\\Node\\NodeWrittenEvent"]},{"file":"/var/www/html/lib/private/EventDispatcher/EventDispatcher.php","line":79,"function":"dispatch","class":"OC\\EventDispatcher\\EventDispatcher","type":"->","args":["OCP\\Files\\Events\\Node\\NodeWrittenEvent",{"__class__":"OCP\\Files\\Events\\Node\\NodeWrittenEvent"}]},{"file":"/var/www/html/lib/private/Files/Node/HookConnector.php","line":83,"function":"dispatchTyped","class":"OC\\EventDispatcher\\EventDispatcher","type":"->","args":[{"__class__":"OCP\\Files\\Events\\Node\\NodeWrittenEvent"}]},{"file":"/var/www/html/lib/private/legacy/OC_Hook.php","line":85,"function":"postWrite","class":"OC\\Files\\Node\\HookConnector","type":"->","args":[{"path":"/Test/test.webp"}]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/File.php","line":443,"function":"emit","class":"OC_Hook","type":"::","args":["OC_Filesystem","post_write",{"path":"Test/test.webp"}]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/File.php","line":363,"function":"emitPostHooks","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->","args":[false]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php","line":126,"function":"put","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":1098,"function":"createFile","class":"OCA\\DAV\\Connector\\Sabre\\Directory","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":504,"function":"createFile","class":"Sabre\\DAV\\Server","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpPut","class":"Sabre\\DAV\\CorePlugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["method:PUT",[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Server.php","line":212,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Server.php","line":427,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/apps/dav/appinfo/v2/remote.php","line":25,"function":"exec","class":"OCA\\DAV\\Server","type":"->","args":[]},{"file":"/var/www/html/remote.php","line":151,"args":["/var/www/html/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/html/apps/photos/vendor/woltlab/webp-exif/src/Decoder.php","Line":96,"message":"Uncaught exception","exception":"{\"class\":\"Error\",\"message\":\"Class \\\"WoltLab\\WebpExif\\ChunkType\\\" not found\",\"code\":0,\"file\":\"/var/www/html/apps/photos/vendor/woltlab/webp-exif/src/Decoder.php:96\",\"trace\":\"#0 /var/www/html/apps/photos/lib/Listener/ExifMetadataProvider.php(180): WoltLab\\WebpExif\\Decoder->decodeChunk(Object(Nelexa\\Buffer\\ResourceBuffer@anonymous))\\n#1 /var/www/html/apps/photos/lib/Listener/ExifMetadataProvider.php(82): OCA\\Photos\\Listener\\ExifMetadataProvider->getExifFromWebP(Resource id #176)\\n#2 /var/www/html/lib/private/EventDispatcher/ServiceEventListener.php(57): OCA\\Photos\\Listener\\ExifMetadataProvider->handle(Object(OCP\\FilesMetadata\\Event\\MetadataLiveEvent))\\n#3 /var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php(220): OC\\EventDispatcher\\ServiceEventListener->__invoke(Object(OCP\\FilesMetadata\\Event\\MetadataLiveEvent), 'OCP\\\\FilesMetada...', Object(Symfony\\Component\\EventDispatcher\\EventDispatcher))\\n#4 /var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php(56): Symfony\\Component\\EventDispatcher\\EventDispatcher->callListeners(Array, 'OCP\\\\FilesMetada...', Object(OCP\\FilesMetadata\\Event\\MetadataLiveEvent))\\n#5 /var/www/html/lib/private/EventDispatcher/EventDispatcher.php(67): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch(Object(OCP\\FilesMetadata\\Event\\MetadataLiveEvent), 'OCP\\\\FilesMetada...')\\n#6 /var/www/html/lib/private/EventDispatcher/EventDispatcher.php(79): OC\\EventDispatcher\\EventDispatcher->dispatch('OCP\\\\FilesMetada...', Object(OCP\\FilesMetadata\\Event\\MetadataLiveEvent))\\n#7 /var/www/html/lib/private/FilesMetadata/FilesMetadataManager.php(100): OC\\EventDispatcher\\EventDispatcher->dispatchTyped(Object(OCP\\FilesMetadata\\Event\\MetadataLiveEvent))\\n#8 /var/www/html/lib/private/FilesMetadata/Listener/MetadataUpdate.php(42): OC\\FilesMetadata\\FilesMetadataManager->refreshMetadata(Object(OC\\Files\\Node\\File))\\n#9 /var/www/html/lib/private/EventDispatcher/ServiceEventListener.php(57): OC\\FilesMetadata\\Listener\\MetadataUpdate->handle(Object(OCP\\Files\\Events\\Node\\NodeWrittenEvent))\\n#10 /var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php(220): OC\\EventDispatcher\\ServiceEventListener->__invoke(Object(OCP\\Files\\Events\\Node\\NodeWrittenEvent), 'OCP\\\\Files\\\\Event...', Object(Symfony\\Component\\EventDispatcher\\EventDispatcher))\\n#11 /var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php(56): Symfony\\Component\\EventDispatcher\\EventDispatcher->callListeners(Array, 'OCP\\\\Files\\\\Event...', Object(OCP\\Files\\Events\\Node\\NodeWrittenEvent))\\n#12 /var/www/html/lib/private/EventDispatcher/EventDispatcher.php(67): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch(Object(OCP\\Files\\Events\\Node\\NodeWrittenEvent), 'OCP\\\\Files\\\\Event...')\\n#13 /var/www/html/lib/private/EventDispatcher/EventDispatcher.php(79): OC\\EventDispatcher\\EventDispatcher->dispatch('OCP\\\\Files\\\\Event...', Object(OCP\\Files\\Events\\Node\\NodeWrittenEvent))\\n#14 /var/www/html/lib/private/Files/Node/HookConnector.php(83): OC\\EventDispatcher\\EventDispatcher->dispatchTyped(Object(OCP\\Files\\Events\\Node\\NodeWrittenEvent))\\n#15 /var/www/html/lib/private/legacy/OC_Hook.php(85): OC\\Files\\Node\\HookConnector->postWrite(Array)\\n#16 /var/www/html/apps/dav/lib/Connector/Sabre/File.php(443): OC_Hook::emit('OC_Filesystem', 'post_write', Array)\\n#17 /var/www/html/apps/dav/lib/Connector/Sabre/File.php(363): OCA\\DAV\\Connector\\Sabre\\File->emitPostHooks(false)\\n#18 /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php(126): OCA\\DAV\\Connector\\Sabre\\File->put(Resource id #16)\\n#19 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1098): OCA\\DAV\\Connector\\Sabre\\Directory->createFile('test.webp', Resource id #16)\\n#20 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(504): Sabre\\DAV\\Server->createFile('files/Agrarvolu...', Resource id #16, NULL)\\n#21 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpPut(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#22 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:PUT', Array)\\n#23 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(212): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#24 /var/www/html/apps/dav/lib/Server.php(427): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#25 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#26 /var/www/html/remote.php(151): require_once('/var/www/html/a...')\\n#27 {main}\"}","CustomMessage":"Uncaught exception"},"id":"69be6c0c6b2b6"}

Configuration

Nextcloud

The output of occ config:list system or similar is best, but, if not possible, the contents of your config.php file from /path/to/nextcloud is fine (make sure to remove any identifiable information!):

{
    "system": {
        "htaccess.RewriteBase": "\/",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "upgrade.disable-web": true,
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "pgsql",
        "version": "33.0.0.16",
        "default_phone_region": "DE",
        "overwrite.cli.url": "http:\/\/localhost",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbtableprefix": "oc_",
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "serverid": "1",
        "preview_imaginary_url": "***REMOVED SENSITIVE VALUE***",
        "app_install_overwrite": [
            "memories"
        ],
        "memories.db.triggers.fcu": true,
        "memories.exiftool": "\/var\/www\/html\/custom_apps\/memories\/bin-ext\/exiftool-amd64-glibc",
        "memories.vod.path": "\/var\/www\/html\/custom_apps\/memories\/bin-ext\/go-vod-amd64",
        "memories.vod.ffmpeg": "\/usr\/bin\/ffmpeg",
        "memories.vod.ffprobe": "\/usr\/bin\/ffprobe",
        "config_preset": 3,
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpauth": true,
        "mail_smtpport": "465",
        "mail_sendmailmode": "smtp",
        "mail_smtpstreamoptions": {
            "ssl": {
                "allow_self_signed": false,
                "verify_peer": true,
                "verify_peer_name": true
            }
        },
        "mail_smtpsecure": "ssl",
        "enabledPreviewProviders": [
            "OC\\Preview\\Image",
            "OC\\Preview\\HEIC",
            "OC\\Preview\\TIFF",
            "OC\\Preview\\Movie"
        ],
        "defaultapp": "files,memories",
        "maintenance": false,
        "maintenance_window_start": "4",
        "overwriteprotocol": "https",
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "loglevel": 2,
        "trusted_domains": [
            "127.0.0.1",
            "localhost",
            "nextcloud",
            "nginx",
            "test.agrarvolution.at",
        ]
    }
}

Apps

Enabled:
  - activity: 6.0.0-dev.0
  - admin_audit: 1.23.0
  - app_api: 33.0.0
  - bruteforcesettings: 6.0.0-dev.0
  - circles: 33.0.0
  - cloud_federation_api: 1.17.0
  - comments: 1.23.0
  - contactsinteraction: 1.14.1
  - dashboard: 7.13.0
  - dav: 1.36.0
  - federatedfilesharing: 1.23.0
  - federation: 1.23.0
  - files: 2.5.0
  - files_downloadlimit: 5.1.0-dev.0
  - files_pdfviewer: 6.0.0-dev.0
  - files_reminders: 1.6.0
  - files_sharing: 1.25.2
  - files_trashbin: 1.23.0
  - files_versions: 1.26.0
  - firstrunwizard: 6.0.0-dev.0
  - guests: 4.6.0
  - logreader: 6.0.0
  - lookup_server_connector: 1.21.0
  - memories: 7.8.2
  - nextcloud_announcements: 5.0.0
  - notifications: 6.0.0
  - oauth2: 1.21.0
  - password_policy: 5.0.0-dev.0
  - photos: 6.0.0-dev.0
  - privacy: 5.0.0-dev.0
  - profile: 1.2.0
  - provisioning_api: 1.23.0
  - recommendations: 6.0.0-dev.0
  - related_resources: 4.0.0-dev.0
  - richdocuments: 10.1.2
  - richdocumentscode: 25.4.903
  - serverinfo: 5.0.0-dev.0
  - settings: 1.16.0
  - sharebymail: 1.23.0
  - support: 5.0.0
  - survey_client: 5.0.0-dev.0
  - systemtags: 1.23.0
  - text: 7.0.0-dev.3
  - theming: 2.8.0
  - twofactor_backupcodes: 1.22.0
  - twofactor_totp: 15.0.0-dev.0
  - twofactor_webauthn: 2.6.0
  - updatenotification: 1.23.0
  - user_status: 1.13.0
  - viewer: 6.0.0-dev.0
  - weather_status: 1.13.0
  - webhook_listeners: 1.5.0
  - workflowengine: 2.15.0
Disabled:
  - encryption: 2.21.0
  - files_external: 1.25.1
  - onlyoffice: 10.0.0 (installed 10.0.0)
  - suspicious_login: 11.0.0-dev.0
  - twofactor_nextcloud_notification: 7.0.0
  - user_ldap: 1.24.0

since there is an accepted bug on the issuetracker (you found that yourself!) there’s nothing much we can do right here than just waiting for it to be fixed by devs…