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
#!/bin/bash
PHP_INI_SCAN_DIR=.:/usr/local/etc/php70/:/var/packages/WebStation/etc/php_profile/le-nom-du-profil/conf.d/
export PHP_INI_SCAN_DIR
php70 $*
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 :
echo -e '#!/bin/bash\n PHP_INI_SCAN_DIR=.:/usr/local/etc/php70/:/var/packages/WebStation/etc/php_profile/le-nom-du-profil/conf.d/\n export PHP_INI_SCAN_DIR\n php70 $*' > /volume1/web/scripts/script_70.sh
Désormais, vous pouvez remplacer dans toutes vos commandes php par ./script_70.sh.
Par exemple, pour mettre à jour Nextcloud :
sudo -u http ./script_70.sh occ upgrade
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 :
alias php-7='/chemin/vers/le/script/script_php70.sh'
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 Réponses à Résoudre l’erreur PHP 7 depuis la console sur Synology pour pouvoir mettre à jour Nextcloud
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. 🙂
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é !
Installer Nextcloud sur son NAS Synology en une poignée de minutes ! (Sur DSM 6)
Déployer Xpenology sur Proxmox (et ajouter les disques en passthrough)
Installer Vaultwarden sur Synology (DSM7) via Docker
Activer le copier / coller sur la console d’une machine virtuelle VMware ESXI
Déployer Xpenology sur Proxmox (et ajouter les disques en passthrough)
Activer le copier / coller sur la console d’une machine virtuelle VMware ESXI
Installer Vaultwarden sur Synology (DSM7) via Docker
WordPress : attribuer les bonnes permissions aux dossiers et aux fichiers