Administrer les plugins d’un site en ligne de commande

, par Ben.

Deux scripts PHP utilisables en ligne de commande qui permettent de voir les plugins actifs, et d’activer ou désactiver les plugins d’un site avec quelques petites options bien utiles.

Chez Nursit nous hébergeons plein de sites SPIP. Et parfois nous avons besoin de modifier la configuration d’un site en activant ou désactivant un plugin sans avoir d’accès au back-office.
Nous avons mis au point pour cela deux petits scripts bash qui permettent de faire cela avec un œuf de pâques bien sympathique pour migrer un site d’un serveur à un autre !

Désactiver les plugins

Commençons par le plus simple.
Le script site-desactive-plugin.php peut-être lancé depuis la racine du site SPIP, ou éventuellement depuis ecrire/ ou le dossier plugins/ (mais pas dans un sous-répertoire).

Lister les plugins

Lancé sans argument, le script liste les plugins actifs du site, et une aide qui rappelle sa syntaxe d’appel.

Désactiver un ou des plugins précis

Pour désactiver un ou plusieurs plugins précis, il suffit de lister leurs préfixes en argument du script :

Desactiver tous les plugins

L’argument --all permet de désactiver tous les plugins du site. Evidemment, les plugins qui ne sont pas désactivables resteront actifs au final.

Activer les plugins

Le script site-active-plugin.php peut-être lancé depuis la racine du site SPIP, ou éventuellement depuis ecrire/ ou le dossier plugins/ (mais pas dans un sous-répertoire).

Lister les plugins

Lancé sans argument, il liste simplement les plugins actifs et rappelle la syntaxe d’appel :

Activer des plugins d’après leur préfixe

Si l’on indique en argument le préfixe des plugins qu’on veut activer, le script les active simplement :

Si les plugins sont déjà actifs, le script ne fait rien. On peut le vérifier :

Si le plugin demandé n’est pas disponible dans le dossier des plugins, le script ne fait rien :

Activer les plugins utilisés par un autre site

La petite fonctionnalité supplémentaire bien sympathique du script est qu’il peut prendre en charge une URL en argument au lieu du préfixe d’un plugin. Dans ce cas, le script va aller récupérer les en-têtes du site indiqué en URL pour retrouver la liste des plugins qu’il utilise, et activer tous ceux qui ne sont pas déjà actif.

A noter que le script ne désactive pas les plugins du site courant qui sont en trop. Pour avoir la même liste de plugins que sur le site distant, il faut commencer par désactiver tous les plugins du site local au moyen de la commande site-desactive-plugin.php --all.

Le script se contente d’activer les plugins d’après leur préfixe. Il ne prend pas en compte les éventuelles différences de version, et si plusieurs versions compatibles du même plugin sont présentes dans le dossier plugins/, il ne permet pas de choisir laquelle sera activée.

En complément, vous pouvez voir l’astuce proposée par Bruno pour Migrer facilement ses plugins d’un SPIP à un autre si elle vous convient mieux pour votre besoin.


Crédit photo : michelvanbalen