環境

Ubuntu20.04/Apache 2.4でNextcloudを27にアップデート後、以下のメッセージがありました。

・最後のバックグラウンドジョブの実行は17時間前を実行しました。何かがおかしいようです。バックグラウンドジョブの設定を確認してください。

この問題を解決していきます。

状況確認

  • cronジョブを確認
sudo -u www-data php /var/www/html/nextcloud/cron.php 
# Nextcloudがインストールされているディレクトリ配下にあります
  • 実行結果
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:140
Stack trace:
#0 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1531): OC\DB\Connection->connect()
#1 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1029): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/html/nextcloud/lib/private/DB/Connection.php(262): 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(280): Doctrine\DBAL\Query\QueryBuilder->execute()
(後略)

この症状をWebで見てみたら、同じような症状を発見。

もしやと思ってphpinfoで調べたら、やっぱりlaravelをインストした時はphp8で、
アプデの時に8.1がインストされたようです。

php -v
PHP 8.2.8 (cli) (built: Jul  8 2023 07:09:59) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.8, Copyright (c) Zend Technologies

サーバの設定変更時にPHPのバージョンアップが走り、新たなPHPにPHPドライバーが走っていなかったようです。

まずはこの問題をただすため、上記URLを参考に以前使っていたバージョンに戻します。

PHPバージョンダウン

sudo update-alternatives --config php
alternative php (/usr/bin/php を提供) には 2 個の選択肢があります。

  選択肢    パス           優先度  状態
------------------------------------------------------------
* 0            /usr/bin/php8.2   82        自動モード
  1            /usr/bin/php8.1   81        手動モード
  2            /usr/bin/php8.2   82        手動モード


現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 1
update-alternatives: /usr/bin/php (php) を提供するためにマニュアルモードで /usr/bin/php8.1 を使います

sudo update-alternatives --config phpを実行して、選択肢「1」を実行。

  • Webサービス再起動
sudo systemctl restart apache2.service
  • バージョンダウン確認
php -v
PHP 8.1.21 (cli) (built: Jul  8 2023 07:09:57) (NTS)

これで元に戻っていることを確認。

  • cron再実行
sudo -u www-data php /var/www/html/nextcloud/cron.php 
# Nextcloudがインストールされているディレクトリ配下にあります

エラーなくcron.phpが実行されることを確認しました。

復旧確認

Nextcloudに管理者権限でログインし、管理>概要へと進みます。

エラーはなくなりました。もう一つの警告画面はまた改めて対処します。