Installation de plugins, pas de soucis SVP

SPIP 3 propose désormais un SerVeur de Plugins, qui vous permet une recherche et installation facile de plugins depuis l’interface privée.

Outre les difficultés connues de versions trop limitées, qui sont parfois "patchables", un rappel du principe précédera la présentation de quelques situations particulières, qui ont trouvé remède, et les commandes cachées utiles.

cet article est devenu extrêmement long : il sera refondu prochainement...

Article publié le 19 mars 2013, et actualisé en mai 2024

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Bien entendu, le fonctionnement SPIP 2 reste utilisable pour Installer des plugins SPIP ; mais depuis, SPIP 3 améliore les choses, sous réserve de penser ../auto/ ;-) [1]

 Le Serveur de Plugins SPIP3

Le SerVeur de Plugins SVP suppose une norme de stockage des plugins zippés mis à disposition des utilisateurs de SPIP, selon un protocole particulier : la première étape est donc de spécifier un (ou plusieurs) adresses d’URL de dépôts, qui permettra l’interrogation des solutions possibles par une grille de recherche.

La nouvelle grille de recherche SVP sous SPIP 3

Vous pouvez donc CHOISIR des PLUGINS par un ou des mots-clés (voire d’autres sélections techniques...), et cliquer en fonction des résultats présentés :

Dans le choix des plugins, divers cas...
SPIP vous montre les plugins "stables", estompant (en grisant) des plugins en état "dev" ou "test" qui pourraient être moins fiabilisés ; à vous de voir !

Les affichages de listes de plugins de SVP sont triés par "Nom" des plugins, non pas par préfixes, sachant que le Nom est extrait des fichiers de langues,sans correspondre toujours au préfixe du plugin !

Rappelez-vous que SVP nécessite que le serveur Apache puisse écrire dans le répertoire déjà créé [2] ./plugins/auto/ (et parfois aussi dans ./lib), avec des droits qui ne sont pas testés à l’installation.... et que votre Apache ait accès à l’Internet pour télécharger depuis spip.org [3].

Autre chose : le plugin SVP (comme la Médiathèque) dépend du plugin ARCHIVISTE ≥ 0.2.2 !
En cas d’erreurs,vous pouvez contrôler plusieurs choses :
- la version de PHP utilisée (en principe SPIP 3.2 pas compatible avec PHP ≥ 7.3)
- le complétude [4] de votre dépôt (hé oui, il fallait y penser !)

Rechargement du dépot SPIP 3.2 après SVP
ecrire/ ?exec=admin_plugin&var_mode=vider_paquets_locaux


- videz le cache, puis essayer successivement chacune des deux commandes spéciales indiquées ci-après.

 Chargement refusé par SVP !?

Vous êtes passé par le bloc de chargement traditionnel [5], et .... SPIP signale une erreur [6] !
- si SPIP annonce un téléchargement impossible, il peut arriver (en particulier sur de vieux hébergements) qu’il s’agisse d’une erreur de certificats out-of-date : l’URL que vous avez copiée débute par https://files.spip.org/... !
Corrigez en utilisant un lien http:// simple.
- chez certains hébergeurs (Free ?), les téléchargements directs par le moteur Php de SPIP sont interdits (pour raison de sécurité)......

 Contourner l’usage de SVP SVP

Avant SVP, on se débrouillait avec des Outils FTP pour Webmestre pour réaliser une installation manuelle des plugins : alors, si SVP refuse de vous télécharger le plugin sélectionné (avec une erreur 300 ou un simple message "Aucun plugin..." comme ci-dessous

c’est qu’effectivement aucun plugin ne correspond... Ou que le serveur est planté (cela arrive), zut alors.....
Ou bien votre serveur Apache peut aussi rencontrer des problèmes de time-out en lecture de fichiers distants,
ou de taille mémoire (Memory exhausted)...

ou d’accès à l’Internet (un pare feu local bloquerait-il SERVEUR Web de test : COMMENT ? )...

Pas de panique, vous pouvez encore récupérer le zip archivé du plugin en passant par http://plugins.spip.net qui vous proposera de le télécharger en fournissant une URL de la forme https://files.spip.net/spip-zone/leprefixe_plugin.zip qui n’est pas sur le meme serveur...
Et au pire, revenez à la bonne technique du FTP !
Et l’activation du plugin plante votre SPIP : la solution passe aussi par FTP :
- effacez le sous-répertoire du plugin fautif sous plugins/auto/ !

D’autres soucis ont parfois été signalés sur les utilisations fines de spip_version_compare() (en particulier la différence entre celles du core [7] et celle du CS qui appelle directement version_compare() [8]...


 Les commandes cachées pour SVP

Ces manipulations osées, parmi d’autres, peuvent vous perturber le fonctionnement de SPIP : donc, comme souvent déjà, un vidage du cache est un premier réflexe qui devrait devenir automatique en cas de soucis [9].

D’autres cas ont pu être signalés : devoir supprimer et recréer l’arborescence ./plugins/auto/, peut-être que le re-chargement de plugins positionnait mal les sous-dossiers codés aux numéros de versions....

Deux commandes complémentaires spéciales de var_mode, sont exploitables dans SVP (sur la page de Gestion des plugins ./ecrire/?exec=admin_plugin) :

  • &var_mode=vider_paquets_locaux indique à SVP de forcer un recalcul de ses informations en base pour ce qui concerne les plugins locaux, donc (plugins/ , plugins-dist/), forcer le rechargement des tables de données et paquet.xml avec le bon charset...
    Vous passerez donc la commande suivante dans votre URL (pas de double /ecrire// !)
    /ecrire/?exec=admin_plugin&var_mode=vider_paquets_locaux
     
  • &var_mode=reinstaller_svp est encore plus bourrin : il désinstalle SVP [10]
    (comme il est verrouillé dans SPIP, le plugin se réinstallera automatiquement au prochain tour).
    /ecrire/?exec=admin_plugin&var_mode=reinstaller_svp
     

Donc, si c’est un problème de lecture par SVP, le premier devrait corriger ça (ça arrivait dans des cas rares, mais normalement on devrait plus en avoir besoin). Le second nécessitera évidemment de reconfigurer SVP par la suite (dépots de plugins & conf si elle avait été changé…) : voir ci-dessous (attention aussi aux versions de PHP que vous utilisez : Pre-requis Techniques, car SVP y semble particulièrement sensible....).
Afficher les plugins verrouillés (plugins-dist)

Enfin, SPIP peut décider qu’un paquet.xml d’un plugin comporte des erreurs [11] et affiche un pavé d’erreurs !
Mais le lien proposé n’est pas bien codé et l’affichage insuffisant , alors en attendant que les correctifs soient implantés [12] , on vous propose de corriger le /ecrire/plugins/infos_paquet.php [80..85] de la function plugins_infos_paquet($desc, $plug = '', $dir_plugins = _DIR_PLUGINS) en

  1.         // Construire le lien renvoyant sur l'application du validateur XML https://core.spip.net/issues/4257
  2.         $h = // $GLOBALS['meta']['adresse_site'] . '/'   // cf. https://core.spip.net/issues/4257
  3.                  '../' . substr("$dir_plugins$plug/", strlen(_DIR_RACINE)) . 'paquet.xml';
  4.  
  5.         $h = generer_url_ecrire('valider_xml', "var_url=$h");
  6.         $t = _T('plugins_erreur', array('plugins' => $plug));
  7.         // Afficher le premier message d'erreur, puis le lien de détails
  8.         array_unshift($msg, "<a href='$h'>$t</a>" . " <ul class='erreur_xml'><li>" . reset($msg) . "</li></ul>" ); /* https://git.spip.net/spip/ecrire/commit/3a4dad15c1d9b4f3c4dd4db1ef05957fccf8ef28 */
  9.         return array('erreur' => $msg);

Télécharger

Avec les deux propositions conjointes, voici :

L’explication fournie par SVP après ce patch
La première erreur est affichée et le lien cliquable appelle le validateur_xml intégré a SPIP.

 La configuration cachée de SVP

Enfin, SVP est un plugin SPIP (verrouillé) ...donc configurable : vous accéderez à sa ligne descriptive en cliquant le bouton d’onglet "Verrouillés" comme ci-dessous, et donc un clic donnera accès à ?exec=configurer_svp.

Le plugin verrouillé SVP
(cliquer sur l’icône de configuration)

Diverses options sont alors consultables...

 ?exec=configurer_svp

 Plusieurs versions de plugins ?

Tout comme SPIP, et même plus souvent encore, les plugins sont mis à jour fréquemment : SVP vous propose automatiquement les mises à jour disponibles [13], chaque fois que le webmestre revient sur la page de Gestion des Plugins, comme le faisait le Couteau Suisse en SPIP 2.

Deux plugins actifs extraits de la page de SVP SPIP 3.2
A droite, sur Facteur les deux icones de Mise-à-jour (à lancer par SVP), et d’appel de la page de configuration du plugin.
Noter que le clic sur le nom du plugin FreeMind vous offre plus d’informations, lien vers une page de documentation en-ligne avec "Savoir plus", et enfin le sous-répertoire d’installation du plugin.

Et la mise-à-jour de nombreux plugins est encore plus facile, car un automatisme complet est accessible en fin de page, il suffit de cliquer sur cocher les mises-à-jour avant de lancer le téléchargement et l’activation de toutes ces nouveautés traitées [14] en un lot.

Aller en bas d’ecran pour lancer les chargements

Souvenez-vous que si le plugin n’est pas accessible depuis SVP, l’installation directe d’un zip [15] reste possible :
- soit en donnant le lien HTTP de téléchargement direct, et SVP effectuera une installation automatique (dans ./plugins/auto/ s’il existe),
- soit même en ’calculant’ le lien de rechargement depuis la zone, sous la forme :
https://zone.spip.net/trac/spip-zone/changeset/latest/_plugins_/NOM_DU_PLUG?old_path=/&format=zip pour obtenir le Zip reconstitué depuis la zone : ex. _plugins_/clients ?old_path=/&format=zip !
- soit par FTP : à vous de le mettre, soit dans ./plugins/ (mais sans possibilité de mise-à-jour automatique, soit sous l’arborescence ./plugins/auto/.
Bien sûr, vous n’oublierez pas d’activer manuellement ce plugin.

Le bloc chargement direct d’un plugin par zip
en bas de la page "Ajouter des plugins"

Ainsi vous pourrez charger et installer une nouvelle version de plugin, proposée depuis un autre point de chargement ou non encore rendue disponible en .zip sur la zone, par exemple :

Le résultat d’un changement de version de plugin.

 Pallier des erreurs à l’activation d’un plugin

En général, la solution est de désactiver/supprimer le plugin coupable (au moins temporairement) : pour cela, il n’y a guère qu’une solution, radicale, FTP !

- s’il s’agit d’une erreur PHP (ce qui ne devrait jamais arriver ! ;-), mais bien possible sur les plugins récents sur de vieux hébergements, j’ai plusieurs fois rencontré l’erreur suivante, sur une simple ligne d’initialisation genre $array_truc = []; !
La syntaxe Php raccourcie [] n’est pas reconnue par le vieil interpréteur PHP = remplacer par :
$array_mot = array(); // ## $array_mot = [];
- une erreur "nouvelle" [16] peut apparaitre dans un vieux SPIP 4.o.x :

Erreur dans les plugins : auto/simplog/v2.0.5
categorie : attribut obligatoire mais absent dans paquet

Car dans les dernières versions de SPIP, cet attribut n’est plus obligatoire dans paquet.xml : la solution simple est d’ouvrir ce fichier (texte ASCII) dans un éditeur de texte et de rajouter une ligne categorie="maintenance" à l’intérieur et sous la balise <paquet...
- un autre souci est souvent évoqué dans les forums, avec des symptômes divers : soit le webmestre voit apparaitre un pavé d’erreur indiquant une table non trouvée, l’installation du plugin est refusée sans détail, voire l’interface privée bascule totalement en debug !
En fait, une cause commune à tous ces symptômes possibles, c’est une table manquante : lors de l’installation du plugin, la table de données nécessaire au plugin n’a pas pu être ajoutée dans la base SPIP, sans message explicite [17] ...
Vérifiez déjà ce point (en tant que rédacteur) en listant les tables présentes [18] dans ./ecrire/?exec=vertebres, ou mieux par le plugin intégré Adminer...
Et si l’installation ne veut pas se faire, récupérer sur un site SPIP correctement fonctionnel, la seule structure SQL des tables nécessaires, puis recopiez pour exécution SQL les quelques instructions correspondantes (en corrigeant le prefix si besoin), dans votre interface SQL [19] ci-dessus.

Nota Bene BUG /printemps 2024 : Dernière version SVP / Composer / Optimages [20]
Pour information, vous savez peut-être que le développement des plugins SPIP s’oriente désormais autour de l’outil PHP Composer..ne vous inquiétez pas, c’est transparent ! Enfin, presque... dans les dernières versions SPIP 4.2.x dites compatibles avec PHP 7.4 s’est glissé un bug (en-cours de correction) dans une dépendance de SVP, provoquant une Fatal Error d’incompatibilité PHP inférieure à 8.1 lors de certaines mise-à-jour de versions de plugins [21] : en fait, renseignements pris (grâce à la réactivité de B_b et d’autres sur le canal IRC de SPIP), le bug m’est localisé dans le plugin optimages plugin/auto/optimages [22].

Le bouton pour télécharger des sources depuis GIT.spip.net

En fait la correction du bug est effectuée (voir https://discuter.spip.net/t/optimag...), mais n’a pas été "taggée", et la mise-à-jour des sources n’est donc pas automatique...
Qu’a cela ne tienne, vous allez récupérer le code des dernières sources en utilisant le choix ad’hoc du bouton Code ci-contre, par exemple un optimages-master.zip que vous décompactéez en ecrasant laes fichiers actuels du sous-dossier plugin/auto/optimages/v0.1.4/... Et miracle, c’est O.K. Bravo SPIP

Enfin rappelons que -vue la complexité de ce chargeur inter-serveurs- vous pourrez parfois avoir besoin des quelques commandes de déblocage de SVP vues ci-dessus.


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1Etque son serveur fonctionne..... en panne ce début mars 2020 !!

[2Hormis usage d’un spip_loader récent , les dossiers doivent être créés manuellement par FTP : voir Check-liste d’installation SPIP.

[3Votre Wamp local doit être connecté au Net, et .... désolé pour les utilisateurs de Free et quelques autres : certains hébergeurs brident ce téléchargement direct

[4Vérifier le nombre de plugins effectivement mis en base de données, sinon ré-installez : voire plus bas Installation de plugins, pas de soucis SVP !

[5par impossibilité, parce que votre SPIP refuse de télécharger l’archive dont vous avez pourtant vérifier l’URL sur Contrib, qui pointe vers https://files.spip.org/spip-zone/sp......

[6Parfois de façon erronée, peut-on deviner dans certains cas : videz les caches et recommencez,... ou utilisez un contournement.

[7définie en ecrire/plugins/installer.php#L166 !

[8définie en couteau_suisse/outils/maj_auto_action_rapide.php#29 !

[9Ne plus oublier que l’interface privée de SPIP 3 est aussi gérée en squelettes...

[10Rappelons que SVP est un plugin indépendant de SPIP, et donc doté de ses propres routines d’installation-désinstallation ; la désinstallation vides les tables internes...

[11que vous ne parvenez pas à identifier avec la page de validation https://plugins.spip.net/spip.php?p..., ou que votre SPIP trouve encore invalide malgré cela..

[12Etudiez les signalement https://core.spip.net/issues/4257 et contournement proposé https://git.spip.net/spip/ecrire/co... ; !

[13Signalées par une petite icone supplémentaire : deux fleches formant un cercle..

[14SPIP 3.3 annoncera d’avance la prochaine version pointée par cette mise-à-jour.... utile

[15Liens http de téléchargement recopiés de l’article de Contrib, ou depuis Plugins ou d’après l’espace de chargement de la Zone.

[16Amélioration par contre en SPIP 4 : les plugins en dépendances sont automatiquement mises-à-jour par SVP si nécessaire, sans attendre une intervention du Webmestre.

[17D’après certaines expériences, ce pourrait être dû à une incohérence de syntaxe entre le plugin programmé et la version de PHP (particulièrement SPIP 7+) !

[18Pour identifier les tables utiles au plugin dont l’activation pose problème, regardez le source PHP du sous-dossier ./plugins/auto/nom_plugin/base/ pour reconnaitre les noms de tables concernées.

[19Attention,il m’est même arrivé de me faire refuser la création de tables dans Adminer, et de devoir passer par le PhpMyAdmin intégré de l’hébergeur...

[20Cela vous interpelle ?

[21désolé je n’ai plus le message sous les yeux..

[22Attention, jamais entendu parler avant, c’est une dépendance théoriquement verrouillée, mais en mode "user" !


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 19 mars 2013, et actualisé en mai 2024 .

Répondre à cet article