Logo de Nextcloud Depuis la mise à jour de Nextcloud en version 18 sur Yunohost, je rencontre une erreur assez pénible liée à la version de PHP exécutée par défaut.

On va s’attacher à décrire puis à corriger ce problème.

Description du problème

Nextcloud 18 nécessite un environnement PHP en version 7.2 minimum. Sur Yunohost les version 5, 7.0 et 7.3 sont disponibles. Pour une raison que j’ignore Yunohost force la version par défaut à 7.0, ce qui engendre un “léger” contretemps. Lorsque le cron de Nextcloud est lancé toutes les 15 minutes avec l’exécutable php, l’exécution échoue :

Cron nextcloud@cloud php -f /var/www/nextcloud/cron.php 2>&1

This version of Nextcloud requires at least PHP 7.2
You are currently running 7.0.33-29+0~20200514.36+debian9~1.gbp126f6f. Please update your PHP version.

Je reçois donc cet e-mail toutes les 15 minutes, soit 96 fois par jour… C’est plutôt pénible.

Comment corriger ce problème

Il existe deux moyens de corriger ce problème.

Solution 1 : Rétablir la version par défaut de PHP du système

Il suffit de lancer (en root ou sudo) : update-alternatives --config php :

Il existe 3 choix pour l'alternative php (qui fournit /usr/bin/php).

  Sélection   Chemin           Priorité  État
------------------------------------------------------------
  0            /usr/bin/php7.3   73        mode automatique
  1            /usr/bin/php5     50        mode manuel
* 2            /usr/bin/php7.0   70        mode manuel
  3            /usr/bin/php7.3   73        mode manuel

Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :0
update-alternatives: utilisation de « /usr/bin/php7.3 » pour fournir « /usr/bin/php » (php) en mode automatique

C’est une solution que j’avais déjà mise en place. Elle est simple et rapide, mais elle n’a pas survécu à une mise à jour de Yunohost.

Solution 2 : Spécifier manuellement la version de PHP de cron

On peut tout simplement éditer le fichier cron (crontab -u nextcloud -e) et modifier la dernière ligne :

*/15 * * * * php -f /var/www/nextcloud/cron.php 2>&1

qui doit devenir :

*/15 * * * * /usr/bin/php7.3 -f /var/www/nextcloud/cron.php 2>&1

Il n’y a plus qu’à espérer que cette modification soit plus pérène, avant que le bug ne soit définitivement corrigé dans Yunohost.