Come appare il messaggio
Last background job execution ran 3 days ago. Something seems wrong.Cause frequenti
- Job in background impostati su AJAX o Webcron invece di Cron.
- Nessuna voce crontab per l'utente del web server, oppure è nella crontab di root.
- cron.php si interrompe, ad es. per APCu nella CLI, versione PHP sbagliata o limite di memoria.
- Timer systemd disattivato o non migrato insieme al server.
- Setup a container senza un container cron separato.
Verifica
- Mostra la modalità impostata per i job in background
sudo -u www-data php /var/www/nextcloud/occ config:app:get core backgroundjobs_mode - Mostra la crontab dell'utente del web server
crontab -u www-data -l - Esegui cron.php a mano una volta e guarda gli errori
sudo -u www-data php -f /var/www/nextcloud/cron.php; echo "exit $?" - Controlla i timer systemd esistenti
systemctl list-timers | grep -i nextcloud
Soluzione
- Imposta la modalità Cron:
occ background:cron. - Crea la crontab per www-data:
*/5 * * * * php -f /var/www/nextcloud/cron.php. - Correggi gli errori del lancio manuale, ad es. imposta
apc.enable_cli=1. - In alternativa usa un timer systemd ogni 5 minuti come www-data.
- Dopo qualche minuto controlla nelle impostazioni admin che l'orario sia aggiornato.
Domande frequenti
Perché non AJAX?
AJAX esegue i job solo quando qualcuno usa l'interfaccia web, e uno per pagina. Con poco utilizzo i job si accumulano.
cron.php può girare come root?
No. cron.php deve girare come proprietario dei file di Nextcloud, altrimenti crea file con permessi sbagliati e Nextcloud si blocca.