Hello Nextcloud Community,
I’m facing a challenging issue with Nextcloud running in Docker, where the OCC command fails for the www-data
user due to PHP module access issues, despite working setups for other functionalities like web interface and Windows sync.
Environment Details:
- Docker Setup: Using Portainer, this is my docker compose :
version: "3"
networks:
npm-frontend:
external: true
backend:
services:
nextcloud-app:
image: nextcloud:latest
container_name: nextcloud-app
restart: always
volumes:
- /disk/nextcloud/data/:/var/www/html/data
- /docker/nextcloud_server/nextcloud/:/var/www/html
- /docker/nextcloud_server/etc/ImageMagick-6/:/etc/ImageMagick-6/
- /docker/nextcloud_server/conf.d/:/usr/local/etc/php/conf.d/
environment:
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_HOST=$MYSQL_HOST
- PUID=1000
- PGID=100
- TZ=Europe/Paris
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_HOST_PASSWORD=${REDIS_HOST_PASSWORD}
- PHP_INI_OPCACHE_MEMORY_CONSUMPTION=256
networks:
- npm-frontend
- backend
nextcloud-cron:
image: nextcloud
container_name: nextcloud-cron
restart: always
volumes:
- /disk/nextcloud/data/:/var/www/html/data
- /docker/nextcloud_server/nextcloud/:/var/www/html
environment:
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_HOST=$MYSQL_HOST
- PUID=1000
- PGID=100
- TZ=Europe/Paris
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_HOST_PASSWORD=${REDIS_HOST_PASSWORD}
depends_on:
- nextcloud-app
entrypoint: /cron.sh
networks:
- npm-frontend
- backend
nextcloud-db:
image: mariadb:11.2
container_name: nextcloud-db
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --wait_timeout=28800 --max_allowed_packet=16M --character-set-server=utf8mb4
volumes:
- /docker/nextcloud_server/nextcloud-db/:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
networks:
- backend
collabora:
image: collabora/code
container_name: collabora
hostname: collabora
cap_add:
- MKNOD
environment:
- domain=${COLLABORA_DOMAIN}
- username=${COLLABORA_USERNAME}
- password=${COLLABORA_PASSWORD}
- DONT_GEN_SSL_CERT="True"
- server_name=${COLLABORA_SERVER_NAME}
- extra_params=--o:ssl.enable=false --o:ssl.termination=true
- aliasgroup1=https://nextcloud.mydomain.fr
depends_on:
- nextcloud-app
ports :
- 9980:9980
networks:
- npm-frontend
- backend
restart: always
redis:
image: redis
container_name: redis
hostname: redis
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Paris
command: ["redis-server", "--requirepass", "${REDIS_HOST_PASSWORD}", "--maxmemory", "256mb", "--maxmemory-policy", "allkeys-lru"]
restart: always
networks:
- backend
adminer:
image: adminer
container_name: adminer
hostname: adminer
networks:
- npm-frontend
- backend
restart: unless-stopped
- Nextcloud Version: Latest, 28.0.4.
- PHP Version: 8.2.17.
- Issue Faced: Execution of
occ
commands aswww-data
fails with database connection errors, indicating potential PHP module access issues :
docker exec -u www-data nextcloud-app php occ integrity:check-core
An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/html/lib/private/DB/Connection.php:139
Stack trace:
#0 /var/www/html/3rdparty/doctrine/dbal/src/Connection.php(1654): OC\DB\Connection->connect()
#1 /var/www/html/3rdparty/doctrine/dbal/src/Connection.php(1081): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/html/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery('SELECT * FROM `...', Array, Array, NULL)
#3 /var/www/html/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(337): OC\DB\Connection->executeQuery('SELECT * FROM `...', Array, Array, NULL)
#4 /var/www/html/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(377): Doctrine\DBAL\Query\QueryBuilder->executeQuery()
#5 /var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
#6 /var/www/html/lib/private/AppConfig.php(421): OC\DB\QueryBuilder\QueryBuilder->execute()
#7 /var/www/html/lib/private/AppConfig.php(187): OC\AppConfig->loadConfigValues()
#8 /var/www/html/lib/private/AppConfig.php(377): OC\AppConfig->getApps()
#9 /var/www/html/lib/private/App/AppManager.php(128): OC\AppConfig->getValues(false, 'enabled')
#10 /var/www/html/lib/private/App/AppManager.php(149): OC\App\AppManager->getInstalledAppsValues()
#11 /var/www/html/lib/private/legacy/OC_App.php(231): OC\App\AppManager->getInstalledApps()
#12 /var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php(90): OC_App::getEnabledApps()
#13 /var/www/html/lib/base.php(700): OC\AppFramework\Bootstrap\Coordinator->runInitialRegistration()
#14 /var/www/html/lib/base.php(1200): OC::init()
#15 /var/www/html/console.php(48): require_once('/var/www/html/l...')
#16 /var/www/html/occ(11): require_once('/var/www/html/c...')
Key Observations and Troubleshooting Attempts:
- Different PHP module access for
root
andwww-data
, withwww-data
lacking necessary permissions in/usr/local/etc/php/conf.d
:
docker exec -u www-data nextcloud-app php -m
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
random
readline
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
docker exec nextcloud-app php -m
[PHP Modules]
apcu
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
gd
gmp
hash
iconv
imagick
intl
json
ldap
libxml
mbstring
memcached
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
Phar
posix
random
readline
redis
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
- Permissions adjustments attempted without success with
docker exec nextcloud-app chmod -R a+r /usr/local/etc/php/conf.d/
;www-data
cannot access all PHP modules :
docker exec -u www-data nextcloud-app php --ini
Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File: (none)
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed: (none)
docker exec nextcloud-app php --ini
Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File: (none)
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed: /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini,
/usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini,
/usr/local/etc/php/conf.d/docker-php-ext-exif.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gmp.ini,
/usr/local/etc/php/conf.d/docker-php-ext-imagick.ini,
/usr/local/etc/php/conf.d/docker-php-ext-intl.ini,
/usr/local/etc/php/conf.d/docker-php-ext-ldap.ini,
/usr/local/etc/php/conf.d/docker-php-ext-memcached.ini,
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-redis.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sysvsem.ini,
/usr/local/etc/php/conf.d/docker-php-ext-zip.ini,
/usr/local/etc/php/conf.d/nextcloud.ini,
/usr/local/etc/php/conf.d/opcache-recommended.ini,
/usr/local/etc/php/conf.d/redis-session.ini,
/usr/local/etc/php/conf.d/session-settings.ini
docker exec -u www-data nextcloud-app ls -la /usr/local/etc/php/conf.d/
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-gmp.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-imagick.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/..': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-memcached.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/nextcloud.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-exif.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/opcache-recommended.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-gd.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-ldap.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-intl.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-sysvsem.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/session-settings.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/.': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-apcu.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-zip.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/redis-session.ini': Permission denied
ls: cannot access '/usr/local/etc/php/conf.d/docker-php-ext-redis.ini': Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? docker-php-ext-apcu.ini
-????????? ? ? ? ? ? docker-php-ext-bcmath.ini
-????????? ? ? ? ? ? docker-php-ext-exif.ini
-????????? ? ? ? ? ? docker-php-ext-gd.ini
-????????? ? ? ? ? ? docker-php-ext-gmp.ini
-????????? ? ? ? ? ? docker-php-ext-imagick.ini
-????????? ? ? ? ? ? docker-php-ext-intl.ini
-????????? ? ? ? ? ? docker-php-ext-ldap.ini
-????????? ? ? ? ? ? docker-php-ext-memcached.ini
-????????? ? ? ? ? ? docker-php-ext-opcache.ini
-????????? ? ? ? ? ? docker-php-ext-pcntl.ini
-????????? ? ? ? ? ? docker-php-ext-pdo_mysql.ini
-????????? ? ? ? ? ? docker-php-ext-pdo_pgsql.ini
-????????? ? ? ? ? ? docker-php-ext-redis.ini
-????????? ? ? ? ? ? docker-php-ext-sodium.ini
-????????? ? ? ? ? ? docker-php-ext-sysvsem.ini
-????????? ? ? ? ? ? docker-php-ext-zip.ini
-????????? ? ? ? ? ? nextcloud.ini
-????????? ? ? ? ? ? opcache-recommended.ini
-????????? ? ? ? ? ? redis-session.ini
-????????? ? ? ? ? ? session-settings.ini
- Other functional aspects of Nextcloud (web interface, sync) are unaffected, suggesting a specific issue with
occ
command execution and PHP module access within the Docker environment.
I’ve attempted downgrading MariaDB to 11.2 instead of latest 11.3 without resolving the issue. The situation seems complex, intertwining Docker permissions, PHP module access, and Nextcloud’s occ
command functionality.
I’m seeking any insights, experiences, or guidance that could help unravel this issue, ensuring www-data
has full access to required PHP modules and can successfully execute occ
commands within this Dockerized Nextcloud environment.
Thank you for any assistance or pointers you can provide!