NextcloudのCron実行エラー

VPS

バックグラウンドジョブのエラー

Nextcloudの設定をあれこれ見直してやっとエラーを解消できたと思ったらいつの間にか出てくるのが……

最終ジョブ実行は %s です。何か問題が発生しています。

Cronが動いていない。そんな時に見直したいこと。

cron.phpを実行するのは誰か

例えば私の環境ではnginxで実行する必要があります。
誰が実行しなければいけないのかは、管理設定のバックグラウンドジョブのところに書いてあります。

Cron(推奨)
システムのcronサービスを利用して、5分ごとにcron.phpファイルを実行します。全てのインスタンスで推奨されます。 cron.php はシステムユーザー “nginx” で実行する必要があります。

ということなので、crontabnginxで書きます。

crontab -u nginx -e
crontab
*/5 * * * * /usr/bin/php -f /var/www/nextcloud/cron.php

上記のような感じで書いておくと、5分ごとに実行してくれます。

念のため、phpは場所(usr/bin)までしっかり書いておきました。各自のphpの場所はwhich phpコマンドで確認できます。また、Nextcloudの設置場所(var/wwwのあたり)も各自違うと思うので確認しておいてください。

APCuを見直す

キャッシュ関連のエラー解消のために、すでにmemcachedやopcacheなどと一緒にAPCuを入れていると思います。
入れていなければインストールしましょう。

sudo dnf install php-pecl-apcu

すると、/etc/php.d/の中に40-apcu.iniというファイルができているので有効になっている部分を見直します。
以下は有効部分をまとめたもの。

40-apcu.ini
[apcu]
extension = apcu.so
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.serializer='php'
[NextcloudCronのためにこれを有効にしておく]
apc.enable_cli=1

特に最後に書いてあるapc.enable_cli=1が有効になっているかをチェックします。

APCuが動いているかの確認。下記のようになっていればOK。

php -i | grep -i apcu
/etc/php.d/40-apcu.ini,
apcu
APCu Support => Enabled
APCu Debugging => Disabled

nginxphp-fpmを再起動しておく。

systemctl restart nginx
systemctl restart php-fpm

これでいけるはず。

みんながこうなりますように。