Failed to connect to the database - CRON problem

Nextcloud version (eg, 20.0.5): 22.2.3
Operating system and version (eg, Ubuntu 20.04): Ubuntu 18.04
Apache or nginx version (eg, Apache 2.4.25): Nginx 1.14.0
PHP version (eg, 7.4): 8.0 (also tried 8.1, 7.4, 7.3)

Is this the first time you’ve seen this error? (Y/N): Y

Steps to replicate it:

  1. Install Nextcloud
  2. Set CRON instead of AJAX/Webcron
  3. Type sudo -u www-data php -f /var/www/html/nextcloud/cron.php.

The output of your Nextcloud log in Admin > Logging:
After performing these actions, no errors appear there.

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

<?php
$CONFIG = array (
  'instanceid' => 'hidden',
  'passwordsalt' => 'hidden',
  'secret' => 'hidden',
  'trusted_domains' => 
  array (
    0 => 'hidden',
  ),
  'datadirectory' => '/var/www/html/nextcloud/data',
  'dbtype' => 'sqlite3',
  'version' => '22.2.3.0',
  'overwrite.cli.url' => 'hidden',
  'installed' => true,
  'maintenance' => false,
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.distributed' => '\\OC\\Memcache\\APCu',
  'memcache.locking' => '\\OC\\Memcache\\APCu',
  'app_install_overwrite' => 
  array (
    0 => 'documents',
  ),
);

The output of your Apache/nginx/system log in /var/log/____:
After performing these actions, no errors appear there. This is not a problem with the web server.

I wanted to set up News on my instance. RSS feeds needs to be updating, which I wanted to use CRON for (AJAX and Webcron are not supported). I followed this guide (https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html) but I ran into a problem.

When I tried to execute command sudo -u www-data php -f /var/www/html/nextcloud/cron.php to test the operation, I got an error:

Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/html/nextcloud/lib/private/DB/Connection.php:87
Stack trace:
#0 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1519): OC\DB\Connection->connect()
#1 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1041): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/html/nextcloud/lib/private/DB/Connection.php(236): Doctrine\DBAL\Connection->executeQuery()
#3 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(345): OC\DB\Connection->executeQuery()
#4 /var/www/html/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(287): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /var/www/html/nextcloud/lib/private/AppConfig.php(344): OC\DB\QueryBuilder\QueryBuilder->execute()
#6 /var/www/html/nextcloud/lib/private/AppConfig.php(109): OC\AppConfig->loadConfigValues()
#7 /var/www/html/nextcloud/lib/private/AppConfig.php(300): OC\AppConfig->getApps()
#8 /var/www/html/nextcloud/lib/private/legacy/OC_App.php(971): OC\AppConfig->getValues()
#9 /var/www/html/nextcloud/lib/private/Server.php(687): OC_App::getAppVersions()
#10 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(160): OC\Server->OC\{closure}()
#11 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#12 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(127): Pimple\Container->offsetGet()
#13 /var/www/html/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#14 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query()
#15 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(182): OC\AppFramework\Utility\SimpleContainer->get()
#16 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(160): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#17 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#18 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(127): Pimple\Container->offsetGet()
#19 /var/www/html/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#20 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query()
#21 /var/www/html/nextcloud/lib/private/Server.php(1064): OC\AppFramework\Utility\SimpleContainer->get()
#22 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(160): OC\Server->OC\{closure}()
#23 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#24 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(127): Pimple\Container->offsetGet()
#25 /var/www/html/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#26 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query()
#27 /var/www/html/nextcloud/lib/private/Server.php(2024): OC\AppFramework\Utility\SimpleContainer->get()
#28 /var/www/html/nextcloud/lib/private/Files/View.php(118): OC\Server->getLockingProvider()
#29 /var/www/html/nextcloud/lib/private/Server.php(435): OC\Files\View->__construct()
#30 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(160): OC\Server->OC\{closure}()
#31 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#32 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(127): Pimple\Container->offsetGet()
#33 /var/www/html/nextcloud/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#34 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query()
#35 /var/www/html/nextcloud/lib/private/Server.php(1387): OC\AppFramework\Utility\SimpleContainer->get()
#36 /var/www/html/nextcloud/lib/base.php(594): OC\Server->boot()
#37 /var/www/html/nextcloud/lib/base.php(1089): OC::init()
#38 /var/www/html/nextcloud/cron.php(42): require_once('...')
#39 {main}

Initially, I was using PHP 8.1, but in this case, when I tried to execute the above command, the information appeared that my version of Nextcloud does not support this version of PHP yet. I downgraded PHP and got this error.

As I am using APC, I also tried to add --define apc.enable_cli=0 to the end of the command, but the problem persists.

I only need CRON to update RSS feeds so I tried to use this one as well: GitHub - nextcloud/news-updater: Fast, parallel feed updater for the News app; written in Python, but when I tried nextcloud-news-updater /var/www/html/nextcloud, an error appeared:

2022-03-09 16:55:05,138 - Nextcloud News Updater - ERROR - Command '['php', '-f', '/var/www/html/nextcloud/occ', 'news:updater:before-update']' returned non-zero exit status 1.: Trying again in 30 seconds
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/nextcloud_news_updater/api/updater.py", line 69, in run
    self.before_update()
  File "/usr/local/lib/python3.6/dist-packages/nextcloud_news_updater/api/cli.py", line 103, in before_update
    self.cli.run(self.api.before_cleanup_command)
  File "/usr/local/lib/python3.6/dist-packages/nextcloud_news_updater/api/cli.py", line 12, in run
    return check_output(commands)
  File "/usr/lib/python3.6/subprocess.py", line 356, in check_output
    **kwargs).stdout
  File "/usr/lib/python3.6/subprocess.py", line 438, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['php', '-f', '/var/www/html/nextcloud/occ', 'news:updater:before-update']' returned non-zero exit status 1.
^[[A^[[A^CTraceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/nextcloud_news_updater/api/updater.py", line 69, in run
    self.before_update()
  File "/usr/local/lib/python3.6/dist-packages/nextcloud_news_updater/api/cli.py", line 103, in before_update
    self.cli.run(self.api.before_cleanup_command)
  File "/usr/local/lib/python3.6/dist-packages/nextcloud_news_updater/api/cli.py", line 12, in run
    return check_output(commands)
  File "/usr/lib/python3.6/subprocess.py", line 356, in check_output
    **kwargs).stdout
  File "/usr/lib/python3.6/subprocess.py", line 438, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['php', '-f', '/var/www/html/nextcloud/occ', 'news:updater:before-update']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/nextcloud-news-updater", line 11, in <module>
    load_entry_point('nextcloud-news-updater==11.0.0', 'console_scripts', 'nextcloud-news-updater')()
  File "/usr/local/lib/python3.6/dist-packages/nextcloud_news_updater/__main__.py", line 26, in main
    container.resolve(Updater).run()
  File "/usr/local/lib/python3.6/dist-packages/nextcloud_news_updater/api/updater.py", line 99, in run
    time.sleep(30)

I am using sqlite database. I know this is discouraged, but I’m using it on such a small scale that I’d rather not put MySQL server specifically for it. The file owncloud.db permission is -rw-r - r-- and is owned by www-data.
Apart from that, I did not notice any errors when using the instance.

Has anyone encountered such a problem or know how to solve it?

The configuration of the command line php can be different and probably some of the database modules are not enabled. Often you find different configuration files in /etc/php*/, one folder or something cli for the command line version, and a different apache/fpm/… for the web-version. Just compare the configurations.