Auto-hébergement Logiciel Synology

Résoudre l’erreur PHP 7 depuis la console sur Synology pour pouvoir mettre à jour Nextcloud

PHP 7 obligatoire depuis Nextcloud 14

Si vous avez tenté la mise à jour de Nextcloud sur Synology depuis la console, vous avez certainement dû vous heurter à une erreur lorsque vous avez eu besoin d’exécuter PHP.

En effet, Synology n’a pas facilité la vie de ses utilisateurs : le constructeur a remplacé la fonction bash « php » par « php56 » (allez comprendre pourquoi).

En toute logique, il faudrait donc utiliser « php70 » pour exécuter une commande avec php 7… ou pas ! Si vous tentez d’exécuter sudo -u http php70…, vous obtenez un message d’erreur. Or, impossible de mettre à jour votre Nextcloud via php 5.6 !

Nous allons donc mettre en place un script à appeler à chaque fois que nous souhaitons exécuter une commande en php 7, afin de contourner l’erreur.

Prérequis

Partons du principe que vous avez installé les paquets PHP 5.6 et PHP 7, et par conséquent un profil php 5.6 et un profil php 7.

Pour commencer, il va nous falloir repérer le profil de php 7 que nous allons utiliser : connectez-vous en SSH à votre serveur, et rendez-vous dans /var/packages/WebStation/etc/php_profile

Vous devriez avoir 2 dossiers aux noms à rallonge (a7557633-8e25-4a6a-83cd-7dc6fb38e753 par exemple). En regardant dans ces dossiers, éditez le fichier fpm.conf.

La ligne syslog.ident = php70-fpm vous indique que vous êtes sur le bon profil (par opposé à syslog.ident = php56-fpm). Notez la chaîne de caractères correspondant au nom du profil , puis passons à la création du script :

Création du script

Remplacez le-nom-du-profil par… la chaîne de caractère que vous avez noté précédemment, puis enregistrez le fichier, script_php70.sh par exemple, puis déposez le fichier sur votre serveur.

Vous pouvez aussi tout faire via la console :

Désormais, vous pouvez remplacer dans toutes vos commandes php par ./script_70.sh.

Par exemple, pour mettre à jour Nextcloud  :

Créer un alias

Astuce : pour éviter de retrouver le chemin du script à chaque fois que vous en avez besoin, créons un alias :

Dans le fichier /etc.defaults/.bashrc_profile, ajoutons la ligne :

Ici, j’ai choisi php-7 comme alias. En relançant la connexion SSH à votre serveur, vous pouvez désormais utiliser php-7 (ou tout autre alias de votre choix) pour exécuter vos commandes php7.

Nous avons enfin toutes les billes pour entamer sereinement la mise à jour de Nextcloud : je vous détaille tout ça dans un prochain article ! 🙂

Merci à Andreas de Viking Studios pour la solution !


2 Commentaires
  1. Maxime 5 mois ago
    Répondre

    Bonjour,

    Cette Procédure est-elle toujours d’actualité ?

    sudo: ./script_70.sh: command not found

    Avec ou sans l’utilisation de l’alias, même erreur.
    sudo: php-7: command not found

    Je désespère de trouver une solution pour enfin mettre à jour nextcloud. 🙂

    • raphael 5 mois ago
      Répondre

      Hello Maxime !
      Le sudo php-7 ne peut fonctionner qu’avec l’alias, sinon il faut que tu entres le path entier lorsque tu veux faire la mise à jour !
      Par exemple pour ma part : /volume1/web/scripts/script-php7.sh
      Dis moi si ça a fonctionné !

Leave a Comment

Votre adresse ne sera pas publiée.

Vous pourriez aussi aimer