Nextcloudでバックグラウンドジョブが失敗する場合

我が家では Raspberry Pi 上に構築した Nextcloud を運用しています。

先日何気なく管理画面を覗いたら、警告が表示されていました。

  • バックグラウンドジョブ
    最終ジョブ実行は 10日前 です。何か問題が発生しています。

※この画面は、[設定] - [基本設定] の中にあります。

仕方がないので、手動で実行することにしました。

目次

やること

エラーになった Nextcloud のバックグラウンドジョブを手動で実行します。

環境

サーバ

  • 本体
    Raspberry Pi 3 Model B

作業手順

PHPパスの確認

Nextcloud は PHP で開発されています。

PHP でバックグラウンドジョブを実行するため、手動実行に際して事前にパスを確認しておきます。

PHP 7.3 が稼働していることがわかります。

$ which php
/usr/bin/php

$ /usr/bin/php -v
PHP 7.3.14-1~deb10u1 (cli) (built: Feb 16 2020 15:07:23) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.14-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies

実行ファイルの確認

Nextcloud の(バックグラウンドジョブを処理する)PHP ファイルの場所を確認します。

Nextcloud ディレクトリの直下にある cron.php が対象のファイルです。

DocumentRootの確認

Nextcloud ディレクトリは(通常 DocumentRoot 配下にあるため)DocumentRoot の場所を確認します。

私の環境では、cron.php はDocumentRoot 配下の Nextcloud ディレクトリ直下にありました。

$ cat /etc/apache2/sites-available/000-default.conf | grep DocumentRoot
        DocumentRoot /var/www/html

$ ls -lh /var/www/html/nextcloud/cron.php 
-rw-r--r-- 1 www-data www-data 5.1K  6月 25 10:53 /var/www/html/nextcloud/cron.php

ジョブ実行

バックグラウンドジョブを実行します。

一般ユーザーだと下記エラーになります。

$ /usr/bin/php -f /var/www/html/nextcloud/cron.php 
Cannot write into "config" directory!
This can usually be fixed by giving the webserver write access to the config directory

Or, if you prefer to keep config.php file read only, set the option "config_is_read_only" to true in it.
See https://docs.nextcloud.com/server/19/go.php?to=admin-config

sudo でユーザーを指定して実行します。

ユーザー www-data は、Debian(Raspberry Pi OS)のデフォルト Apache 実行ユーザーです。
※ちなみに、RHEL(CentOS など)のデフォルト Apache 実行ユーザーは daemon です。

$ sudo -u www-data /usr/bin/php -f /var/www/html/nextcloud/cron.php 

しばらく(数分)待つと、バックグランドジョブの実行が完了し、エラー表示も消えました。


※この画面は、[設定] - [基本設定] の中にあります。