Suite à la mise à jour 17.0.2 des nouveaux messages d’erreurs sont apparus dans le panel administrateur, problème récurent, cette fois voici les colonnes problématiques:
- mounts.storage_id
- mounts.root_id
- mounts.mount_id
Ce type de problème est récurent sur les MAJ Nexcloud, habituellement je corrige les colonnes depuis phpmyadmin. Pourtant l’outil en ligne de commande OCC de Nextcloud est capable de le faire automatiquement, mais je dois avouer de jamais avoir réussi à l’utiliser.
L’article qui suit à donc pour but de corriger ces colonnes avec OCC en SSH sur un serveur UBUNTU 18.04.3. LTS managé par Plesk 18.0.21 avec une version PHP7.3.
Première tentative:
Voici la commande standard pour OCC trouvé sur des forums US qui fonctionne pour les serveurs classiques:
sudo -u www-data php occ db:convert-filecache-bigint
Sur mon serveur j’obtiens ce retour:
An unhandled exception has been thrown:
Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occurred in driver: could not find driver in /var/www/vhosts/xxx/xxx/lib/private/DB/Connection.php:64
Problématique: Un driver php ne semble pas être chargé, pourtant il l’est, seulement sous Plesk il faut spécifier le chemin php qui diffère d’une installation classique
Deuxième tentative:
Maintenant, je spécifie le chemin absolu de ma version de php tel que Plesk l’a installé, ce qui donne cette commande:
sudo -u www-data /opt/plesk/php/7.3/bin/php occ db:convert-filecache-bigint
Voici le retour:
Cannot write into "config" directory!
This can usually be fixed by giving the webserver write access to the config directory
See https://docs.nextcloud.com/server/17/go.php?to=admin-dir_permissions
Or, if you prefer to keep config.php file read only, set the option "config_is_read_only" to true in it.
See https://docs.nextcloud.com/server/17/go.php?to=admin-config
Cette fois, tous les drivers PHP sont chargés, mais l’utilisateur www-data n’a pas les droits pour utiliser OCC. Il suffirait simplement de lui attribuer, mais sous plesk un utilisateur apache est créé pour chaque domaine.
Troisième tentative:
Ici le problème est vraiment spécifique aux utilisateurs Plesk. Je vais donc utiliser la même commande que précédemment mais en renommant l’utilisateur www-data par le nom attribué par plesk à l’utilisateur apache de ce domaine.
Pour des raisons de sécurité, je remplacerai le nom d’utilisateur par « xxx »
sudo -u xxx /opt/plesk/php/7.3/bin/php occ db:convert-filecache-bigint
Voici le retour:
All tables already up to date!
La commande s’exécute sans erreur. Les tables sont correctement corrigées et l’erreur sur la page de MAJ Nextcloud à disparu.
Conclusion:
Plesk est pour moi un outil super, il me fait gagner beaucoup de temps, mais il faut reconnaitre que parfois il complique la situation.
Maintenant que je peux utiliser OCC en SSH, à l’avenir toutes les erreurs similaires seront corrigées de cette manière, beaucoup plus simple que depuis Phpmyadmin