Suite à la mise à jour de ma bonne vieille instance Nextcloud vers la version 21, j’ai noté que les tâches cron n’étaient plus exécutées. Cependant, à part cette alarme, il n’y avait pas de problème particulièrement bloquant de remonté par l’auto-diagnostique de l’application.
En creusant un peu, on voit qu’en fait, il y a un problème avec l’utilitaire php occ, qui génère l’erreur ci-dessous dès qu’on l’invoque:
sudo -u www-data php occ maintenance:mode --on
PHP Warning: Module 'apc' already loaded in Unknown on line 0
An unhandled exception has been thrown:
OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)
Le problème se situe donc avec l’interpréteur php version CLI, et non avec les modules pour apache, ce qui explique que l’auto-diagnostique de Nextcloud ne remonte pas d’alerte pour ce problème.
Pourtant, le module de cache APCu semble bien activé pour PHP CLI :
ls -1 /etc/php/7.3/cli/conf.d
10-mysqlnd.ini
10-opcache.ini
10-pdo.ini
15-xml.ini
20-apcu.ini
20-bcmath.ini
20-bz2.ini
20-calendar.ini
20-ctype.ini
20-curl.ini
...
Heureusement, comme souvent, le forum d’entre-aide du projet Nextcloud m’a sorti de ce mauvais pas. En effet, en consultant la contenu du fichier de configuration du module de cache APCu pour php, on remarque qu’il n’y a pas de paramètres:
cat /etc/php/7.3/mods-available/apcu.ini extension=apcu.so
En ajoutant les lignes apc.enabled=1 et apc.enable_cli=1, tout rentre dans l’ordre.
cat /etc/php/7.3/mods-available/apcu.ini
extension=apcu.so
apc.enabled=1
apc.enable_cli=1
J’en conclus donc que le module de cache APCu n’a jamais fonctionné sur mon instance Nextcloud, et que depuis la version 21, l’utilitaire occ en a besoin obligatoirement.
o/