Can't start Nextcloud because the version of the data (32.0.2.2) is higher than the docker image version (32.0.3.2) and downgrading is not supported. Are you sure you have pulled the newest image version?

Support intro

Sorry to hear you’re facing problems. :slightly_frowning_face:

The community help forum (help.nextcloud.com) is for home and non-enterprise users. Support is provided by other community members on a best effort / “as available” basis. All of those responding are volunteering their time to help you.

If you’re using Nextcloud in a business/critical setting, paid and SLA-based support services can be accessed via portal.nextcloud.com where Nextcloud engineers can help ensure your business keeps running smoothly.

Getting help

In order to help you as efficiently (and quickly!) as possible, please fill in as much of the below requested information as you can.

Before clicking submit: Please check if your query is already addressed via the following resources:

(Utilizing these existing resources is typically faster. It also helps reduce the load on our generous volunteers while elevating the signal to noise ratio of the forums otherwise arising from the same queries being posted repeatedly).

The Basics

  • Nextcloud Server version (e.g., 29.x.x):
    • 32.0.2.2
  • Operating system and version (e.g., Ubuntu 24.04):
    • Ubuntu 24.04, Docker host
  • Web server and version (e.g, Apache 2.4.25):
    • nextcloud:latest docker image
  • Reverse proxy and version _(e.g. nginx 1.27.2)
    • Apache/2.4.58 (Ubuntu)
  • PHP version (e.g, 8.3):
    • nextcloud:latest docker image
  • Is this the first time you’ve seen this error? (Yes / No):
    • Yes
  • When did this problem seem to first start?
    • After docker pull 2025-12-12
  • Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
    • Docker
  • Are you using CloudfIare, mod_security, or similar? (Yes / No)
    • No

Summary of the issue you are facing:

The docker app won’t start, just gives this in the docker logs:

app_1          | Can’t start Nextcloud because the version of the data (
app_1          | Warning: Cannot load module “memcached” because required module “igbinary” is not loaded in Unknown on line 0
app_1          |
app_1          | Warning: Cannot load module “redis” because required module “igbinary” is not loaded in Unknown on line 0
app_1          | 32.0.2.2) is higher than the docker image version (
app_1          | Warning: Cannot load module “memcached” because required module “igbinary” is not loaded in Unknown on line 0
app_1          |
app_1          | Warning: Cannot load module “redis” because required module “igbinary” is not loaded in Unknown on line 0
app_1          | 32.0.3.2) and downgrading is not supported. Are you sure you have pulled the newest image version?

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

  1. Start the docker container

Log entries

Nextcloud

Please provide the log entries from your Nextcloud log that are generated during the time of problem (via the Copy raw option from Administration settings->Logging screen or from your nextcloud.log located in your data directory). Feel free to use a pastebin/gist service if necessary.

Nextcloud exits before logging

Web Browser

If the problem is related to the Web interface, open your browser inspector Console and Network tabs while refreshing (reloading) and reproducing the problem. Provide any relevant output/errors here that appear.

PASTE

Web server / Reverse Proxy

The output of your Apache/nginx/system log in /var/log/____:

PASTE HERE

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!):

$ > cat www/config/config.php
<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' =>
  array (
    0 =>
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 =>
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'instanceid' => 'REDACTED',
  'passwordsalt' => 'REDACTED',
  'secret' => 'REDACTED',
  'trusted_domains' =>
  array (
    0 => '127.0.0.1',
    1 => 'REDACTED',
    2 => 'REDACTED',
    3 => 'REDACTED',
    4 => 'REDACTED',
    5 => 'REDACTED',
  ),
  'datadirectory' => '/var/www/html/data',
  'dbtype' => 'mysql',
  'version' => '32.0.2.2',
  'overwrite.cli.url' => 'https://localhost',
  'dbname' => 'nextcloud',
  'dbhost' => '172.16.50.3',
  'dbport' => '3306',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'REDACTED',
  'dbpassword' => 'REDACTED',
  'installed' => true,
  'overwritehost' => 'REDACTED',
  'overwriteprotocol' => 'https',
  'overwritewebroot' => '/',
  'trusted_proxies' =>
  array (
    0 => '127.0.0.1',
    1 => '172.16.50.1',
  ),
  'mail_from_address' => 'noreply',
  'mail_smtpmode' => 'smtp',
  'mail_sendmailmode' => 'smtp',
  'mail_domain' => 'REDACTED',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_smtphost' => 'REDACTED',
  'mail_smtpport' => '465',
  'twofactor_enforced' => 'true',
  'twofactor_enforced_groups' =>
  array (
    0 => 'PA',
    1 => 'admin',
    2 => 'Users',
  ),
  'twofactor_enforced_excluded_groups' =>
  array (
  ),
  'has_rebuilt_cache' => true,
  'loglevel' => 2,
  'maintenance' => false,
  'defaultapp' => 'apporder',
  'app_install_overwrite' =>
  array (
    0 => 'calendar',
    1 => 'bookmarks',
    2 => 'carnet',
    3 => 'documentserver_community',
    4 => 'bruteforcesettings',
    5 => 'apporder',
    6 => 'onlyoffice',
    7 => 'spreed',
    8 => 'wopi',
    9 => 'side_menu',
  ),
  'allow_local_remote_servers' => 'true',
  'default_phone_region' => 'SE',
  'enable_previews' => false,
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'filelocking.enabled' => 'true',
  'redis' =>
  array (
    'host' => '172.16.50.4',
    'port' => 6379,
  ),
  'theme' => '',
  'data-fingerprint' => 'REDACTED',
  'maintenance_window_start' => 1,
  'opcache.memory_consumption' => 256,
  'forbidden_filename_basenames' =>
  array (
    0 => 'con',
    1 => 'prn',
    2 => 'aux',
    3 => 'nul',
    4 => 'com0',
    5 => 'com1',
    6 => 'com2',
    7 => 'com3',
    8 => 'com4',
    9 => 'com5',
    10 => 'com6',
    11 => 'com7',
    12 => 'com8',
    13 => 'com9',
    14 => 'com¹',
    15 => 'com²',
    16 => 'com³',
    17 => 'lpt0',
    18 => 'lpt1',
    19 => 'lpt2',
    20 => 'lpt3',
    21 => 'lpt4',
    22 => 'lpt5',
    23 => 'lpt6',
    24 => 'lpt7',
    25 => 'lpt8',
    26 => 'lpt9',
    27 => 'lpt¹',
    28 => 'lpt²',
    29 => 'lpt³',
  ),
  'forbidden_filename_characters' =>
  array (
    0 => '<',
    1 => '>',
    2 => ':',
    3 => '"',
    4 => '|',
    5 => '?',
    6 => '*',
    7 => '\\',
    8 => '/',
  ),
  'forbidden_filename_extensions' =>
  array (
    0 => ' ',
    1 => '.',
    2 => '.filepart',
    3 => '.part',
  ),
  'mail_smtpauth' => true,
  'mail_smtpname' => 'REDACTED',
  'mail_smtppassword' => 'REDACTED',
  'log_rotate_size' => 52428800,
  'mail_smtpsecure' => 'ssl',
);

Apps

The output of occ app:list (if possible).

Tips for increasing the likelihood of a response

  • Use the preformatted text formatting option in the editor for all log entries and configuration output.
  • If screenshots are useful, feel free to include them.
    • If possible, also include key error output in text form so it can be searched for.
  • Try to edit log output only minimally (if at all) so that it can be ran through analyzers / formatters by those trying to help you.

Please post your Compose file.

Are you either:

  • overwriting the image’s PHP config folder?
  • building your own image via a custom Dockerfile

I use no Docker file nor overwriting any php folder.

Have been digging and the package php-igbinary seems to be missing from the image.

The missing php-igbinary gives an error on every php command that is run in the image. That error message are muddled together with the version numbers causing the version check to fail.

version: '2.1'

networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: 172.16.50.0/24

services:
  db:
    container_name: nextcloud_db
    image: mariadb:11.4
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --skip-innodb-read-only-compressed
    restart: unless-stopped
    networks:
      default:
        ipv4_address: 172.16.50.3
    volumes:
      - /opt/docker/nextcloud/sql:/var/lib/mysql
      - /opt/docker/nextcloud/backup:/backup
    environment:

      - MYSQL_ROOT_PASSWORD=REDACTED
      - MYSQL_PASSWORD=REDACTED
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=REDACTED

  app:
    container_name: nextcloud_app
    image: nextcloud:32
    ports:
      - 127.0.0.1:8070:443
    links:
      - db
      - redis
    volumes:
      - /opt/docker/nextcloud/www:/var/www/html
      - /opt/docker/nextcloud/apache:/etc/apache2
      - /opt/docker/nextcloud/php:/usr/local/etc/php
    restart: unless-stopped
    networks:
      default:
        ipv4_address: 172.16.50.2
    extra_hosts:
      nextcloud.local: 127.0.0.1
      REDACTED: 192.168.1.1
      REDACTED: 192.168.1.1

  redis:
    container_name: nextcloud_redis
    image: redis:latest
    restart: unless-stopped
    networks:
      default:
        ipv4_address: 172.16.50.4
    volumes:
      - /opt/docker/nextcloud/redis:/var/lib/redis

  appapi-harp:
    container_name: nextcloud_appapi-harp
    environment:
      - HP_SHARED_KEY=REDACTED
      - NC_INSTANCE_URL=https://REDACTED
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/docker/nextcloud/certs:/certs
    hostname: appapi-harp
    restart: unless-stopped
    image: ghcr.io/nextcloud/nextcloud-appapi-harp:release
    ports:
      - 127.0.0.1:8780:8780
      - 127.0.0.1:8782:8782
      - 192.168.1.1:8780:8780
      - 192.168.1.1:8782:8782
    networks:
      default:
        ipv4_address: 172.16.50.5
    extra_hosts:
      REDACTED: 192.168.1.1
      REDACTED: 192.168.1.1

  code:
    container_name: nextcloud_code
    image: collabora/code:latest
    restart: unless-stopped
    ports:
      - 127.0.0.1:11001:9980
    volumes:
      - /opt/docker/nextcloud/code/:/etc/coolwsd/
    cap_add:
      - MKNOD
    environment:
      - domain=REDACTED
      - username=REDACTED
      - password=REDACTED
      - dictionaries=en_US,sv_SE
      - TZ=Europe/Stockholm
      - extra_params="--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:user_interface.mode=compact"
    networks:
      default:
        ipv4_address: 172.16.50.6
    extra_hosts:
      REDACTED: 192.168.1.1
      REDACTED: 192.168.1.1

The following commands got past the version check and started the pending upgrade.

cd /tmp
curl -o php-igbinary.deb https://snapshot.debian.org/file/7748930012580a106869ad28b0575381a56be141/php8.4-igbinary_3.2.16-4_amd64.deb
curl -o php8.4-common.deb https://snapshot.debian.org/file/c2c71f8015bd17dedba1e06bd7b603b8a3e4f2b2/php8.4-common_8.4.11-1%2Bb1_amd64.deb
curl -o ucf.deb https://snapshot.debian.org/file/3655146d2b430eabab297c7149114650353d2a54/ucf_3.0052_all.deb
curl -o sesible-utils.deb https://snapshot.debian.org/file/5eb1f900f46b7787fee2082e3bcb32ed09ccaba6/sensible-utils_0.0.25_all.deb
curl -o libtext-wrapi18n-perl.deb https://snapshot.debian.org/file/f442e53233cb43d7c9d108051d76a73cfd48e473/libtext-wrapi18n-perl_0.06-10_all.deb
curl -o libtext-charwidth-perl.deb https://snapshot.debian.org/file/fd53cdac1915e15c3bf6ce9d36daa948e455bf10/libtext-charwidth-perl_0.04-11%2Bb4_amd64.deb
curl -o php-common.deb http://ftp.de.debian.org/debian/pool/main/p/php-defaults/php-common_96_all.deb
curl -o psmisc.deb http://ftp.de.debian.org/debian/pool/main/p/psmisc/psmisc_23.7-2_amd64.deb
curl -o php8.4-cli.deb https://snapshot.debian.org/file/77c50a25724d60d60cf262b2ee3e13e8ff5430d6/php8.4-cli_8.4.11-1%2Bb1_amd64.deb
curl -o php8.4-readline.deb https://snapshot.debian.org/file/b1c34f16424fd7e0fc2de07d146212622e26a5fb/php8.4-readline_8.4.11-1%2Bb1_amd64.deb
curl -o php8.4-opcache.deb https://snapshot.debian.org/file/1fc1820a2edeb21dc023176207358902042fc1b0/php8.4-opcache_8.4.11-1
curl -o libxml2-16.deb http://ftp.de.debian.org/debian/pool/main/libx/libxml2/libxml2-16_2.15.1+dfsg-2+b1_amd64.deb


apt update
apt install libedit2
dpkg -i libtext-charwidth-perl.deb
dpkg -i libtext-wrapi18n-perl.deb
dpkg -i sesible-utils.deb
dpkg -i ucf.deb
dpkg -i psmisc.deb
dpkg -i php-common.deb
dpkg -i php8.4-common.deb
dpkg -i php8.4-readline.deb
dpkg -i libxml2-16.deb
dpkg -i php8.4-opcache.deb
dpkg -i php8.4-cli.deb
dpkg -i php-igbinary.deb

echo "extension=igbinary.so" >/usr/local/etc/php/conf.d/docker-php-ext-igbinary.ini

/entrypoint.sh apache-foreground

You are per Compose file. So your installation isn’t picking up PHP config changes from the image itself.

It looks like a version mismatch — pulling the latest Docker image should resolve the issue since downgrades aren’t supported.

@UmerKhalid Typically yes, but in this case the error is misleading. The version check isn’t successfully completing since OP’s PHP is erring due to the underlying problem.

That is just to store the php configs outside of the docker image with the rest of the config for ease of access.
All php changes are made from inside of the image.

No it does not, the version checker has no error tolerance of any kind so if anything but four dot separated numbers show up it will produce errors.

version_greater() {
[ “$(printf ‘%s\n’ “$@” | sort -t ‘.’ -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)” != "
$1" ]
}

The underlying issue was that after watchtower pulled the latest image igbinary was required but not installed and I started my morning with a broken system.

See my third post for fixing it.

The config for all image provided customizations and PHP modules (such as igbinary) are located in /usr/local/etc/php/conf.d/). If you overwrite the entire folder locally you are overwriting what is distributed within the image. This is what comes in the v32.0.3 image already for example:

www-data@f1ec48e9ce5c:~/html$ ls -lt /usr/local/etc/php/conf.d
total 84
-rw-r--r-- 1 root root  32 Dec 11 22:22 docker-php-ext-apcu.ini
-rw-r--r-- 1 root root  78 Dec 11 22:22 docker-php-ext-igbinary.ini
-rw-r--r-- 1 root root 107 Dec 11 22:22 nextcloud.ini
-rw-r--r-- 1 root root 244 Dec 11 22:22 opcache-recommended.ini
-rw-r--r-- 1 root root  18 Dec 11 22:22 docker-php-ext-imagick.ini
-rw-r--r-- 1 root root  20 Dec 11 22:22 docker-php-ext-memcached.ini
-rw-r--r-- 1 root root  16 Dec 11 22:22 docker-php-ext-redis.ini
-rw-r--r-- 1 root root  14 Dec 11 22:21 docker-php-ext-zip.ini
-rw-r--r-- 1 root root  18 Dec 11 22:21 docker-php-ext-sysvsem.ini
-rw-r--r-- 1 root root  20 Dec 11 22:21 docker-php-ext-pdo_pgsql.ini
-rw-r--r-- 1 root root  20 Dec 11 22:21 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root  16 Dec 11 22:21 docker-php-ext-pcntl.ini
-rw-r--r-- 1 root root  15 Dec 11 22:21 docker-php-ext-ldap.ini
-rw-r--r-- 1 root root  15 Dec 11 22:21 docker-php-ext-intl.ini
-rw-r--r-- 1 root root  14 Dec 11 22:21 docker-php-ext-gmp.ini
-rw-r--r-- 1 root root  13 Dec 11 22:21 docker-php-ext-gd.ini
-rw-r--r-- 1 root root  14 Dec 11 22:21 docker-php-ext-ftp.ini
-rw-r--r-- 1 root root  15 Dec 11 22:21 docker-php-ext-exif.ini
-rw-r--r-- 1 root root  17 Dec 11 22:20 docker-php-ext-bcmath.ini
-rw-r--r-- 1 root root  23 Dec  8 22:56 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root  17 Dec  8 22:56 docker-php-ext-sodium.ini

Just because the files are stored in a different location dosen’t mean that they can’t be modified from within the container, as read only isn’t specified on the mounts the container has full access to the files.

If they couldn’t, files in /var/www/html wouldn’t be updated from a new image either.

Those directories have been mounted in the same place since I installed the stack several years ago, nothing is overwritten from outside the container just because I prefer to store all my configs in one place instead of in /var/lib/docker/volumes/8604d718adf07f8af1317efdb4c15e7e0392bacb8381062b20a47622f88672ff/_data/ for the app and another for the database.

/usr/local/etc/php/conf.d is not the same as /var/www/html. The former is populated by the Dockerfile at build time – long before you download the image. If you overwrite the contents, you’re overwriting what comes with the image.

If you want to customize PHP settings you can drop additional *.ini files in there, but don’t overwrite the entire folder (unless you’re prepared to manually integrate upstream changes (from the nextcloud image and from the upstream php image it uses as the base; which I don’t recommend).

You don’t have to take my word for it: install a simple test container running the image and you’ll see that the igbinary problem does not exist in a new deployment because the igbinary installation you did and it’s associated configuration in that folder will already exist.

After disabling the mount and redeploying the stack, lo and behold a nice juicy crash.
Frankly I find further discussion in this issue with you superfluous.

@Andlor
You’re right—the version checker’s strict requirement for four dot-separated numbers means pulling the latest Docker image alone won’t help. The function itself needs adjustment to handle variations or include some error tolerance for it to work reliably.

This topic was automatically closed 8 days after the last reply. New replies are no longer allowed.