Les évolutions de spip_loader (historique)

La mise en place d’un site Web [1] pré-suppose le chargement-dépôt par FTP des fichiers du CMS sur votre espacé hébergé...
Si votre hébergeur ne propose pas une installation automatique de SPIP, vous pouvez simplement charger et lancer un seul fichier : l’installateur automatique spip_loader.php à prendre sur la page officielle de download [2] .

Attention à ne pas changer à l’improviste de branche SPIP de façon involontaire : lisez les instructions ci-dessous, et sur le lien de download.

Avant usage en 2021, mettez à jour votre version de spip_loader (au risque d’une page blanche )...
Et vérifiez les pré-requis de versions du serveur pour la version de SPIP voulue [3] ! Et attention à quelques interdits...

Article publié le 26 février 2023, et actualisé en février 2023

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

N.B. : cet article (avec son historique) a beaucoup évolué depuis les origines ; désormais vous pouvez pérenniser les plupart des modifications et suggestions indiquées ci-dessous, dans un fichier annexe à créer spip_loader_config.php, si elles n’ont pas été intégrées au fil des évolutions..

New SPIP 4 : suite au passage de SVN en GIT, il faut mieux désormais utiliser une version 5 de Spip_loader, d’autant que l’API interne a changé ! A recharger sur https://www.spip.net/spip-dev/INSTALL/spip_loader.php.

Spip_loader v5 (accompagnant SPIP 4 & 3.2)
Ce qui change le moins (en apparence ;-)

 Installateur automatique

L’installateur automatique de SPIP [4]est une facilité supplémentaire pour la première initialisation d’un SPIP (comme pour une mise-à-jour d’ailleurs [5]...).

En effet, installer le core de SPIP (quelques milliers de fichiers à transférer par FTP depuis votre poste local vers le serveur de votre hébergeur) représente un certain temps de transfert, d’autant qu’il a déjà fallu le rapatrier depuis les serveurs d’origine https://files.spip.net/archives ;

et si le transfert se faisait directement, de serveur à serveur ?

C’est la démarche automatisée par ce simple script PHP à télécharger depuis la page SPIP de download [6] , un seul fichier à transférer par FTP dans le dossier du serveur hébergeur, qui sera la racine de votre SPIP et à "activer", c’est-à-dire demander son accès au serveur, en donnant dans votre navigateur, l’URL de ce fichier.

Spip_loader (en 2019)
Vous choisissez la version de SPIP voulue (jusqu’à la version en Dév - à éviter normalement), et la prochaine fois, même votre spip_loader se mettra à jour.

Attention ! Vérifiez bien :
- les Pre-requis Techniques en particulier la version de PHP avec openssl ;trop ancienne : le spip_loader vous répondra "Chargement impossible" !
Ah, oui ! Parce qu’il comporte un test de version PHP mini [7].
- le (dé)blocage d’un parefeu !
- la version de PHP sur votre hébergeur [8]
- les dernières versions de spip_loader (4.x..y) à utiliser !

A ce jour passé de sortie de la version SPIP 3.1, il s’agissait de la version spip_loader 2.5.7 (encore corrigée pour faciliter l’usage de mise-à-jour sans erreur) -et elle fonctionne sous Wamp !

spip_loader.2.4.3 (un-official)
Cette version (non officielle) faisait apparaître l’adjonction de contrôle visuel de la version SPIP à utiliser, décrite ci-après (utile avant que cette facilité soit intégrée lors d’une ré-écriture du spip_loader) !


- désormais (depuis les version 3.xx de spip_loader), le chargeur se remet à jour tout seul avec la dernière version [9] ...
- le choix de la branche de version SPIP à installer (voir ci-dessous)
- Le niveau de version de la branche de SPIP est 3.0.16, le ".16" signifie "release 16"(ou indice de version dans la branche), comme il y a des "2.1.x" (branche 2.1), les obsolètes "2.0.x" (branche 2.0) ou 1.9.x (branche 1.9).... et désormais les 3.1 et 3.2.x, bientôt la 3.3-dev !

En fait, spip-3.0.zip contiendra toujours le dernier patch stable de la branche 3.0. et idem pour les autres branches : cela évite de devoir modifier le spip_loader à chaque correction de bug ; ainsi spip_loader pointe sur spip.zip qui est le dernier patch "stable" de la dernière version publiée stable [10].

Si vous changez le sous-répertoire cible, cela vous garantit de garder la branche courante...
Utiliser plutôt define('_DEFAUT_BRANCHE_MAJ', '3.2'); pour "fixer" votre vieille branche /par exemple pour respecter la compatibilité PHP 7.1 pas encore corrigée par votre hébergeur !

Nota Bene  : Il est fortement déconseillé d’utiliser spip_loader si vous n’avez plus d’accès direct aux fichiers (ftp, ssh, ...) pour pouvoir réparer a minima en cas de problème ...

 Des nouveautés 2018-223 !

Avez-vous changé de version de spip_loader ? Les nouvelles versions 3.x proposées en 2018 ont refondu le fonctionnement, d’une part en sécurisant l’information et l’écrasement de versions (déplaçant les fichiers obsolètes), et d’autre part en sortant du code source d’origine [11] les constantes que vous pourriez paramétrer (dans un fichier annexe spip_loader_config.php) !
Vous pouvez alors définir dans ce fichier quelques constantes utiles, comme les auteurs paramétrés [12], ou la version SPIP ciblée : define('_DEFAUT_BRANCHE_MAJ', '3.2'); !
De ce fait, les informations détaillées ci-dessous ne vont plus vous servir... !
Dernière astuce possible : spip_loader.php vérifie son SPIP minimum à la version déjà installée en testant ecrire/inc-version.php....

Le spip_loader est maintenant (début 2023 : version 5.2.1) distribué à l’adresse suivante https://get.spip.net/ sous forme d’un fichier au format binaire phar. Si vous avez besoin de personnaliser l’installation en définissant des constantes, il vous faut créer un fichier de configuration spip_loader_config.php (cf https://www.spip.net/fr_article5705.html).

 Des erreurs ? les risques de blocage ?

Avec le temps spip_loader est devenu une machine performante, mais parfois... un peu sensible ! Quelques pistes d’expérience
- version de spip_loader "antédilivienne" : toujours commencer par recharger un spip_loader récent
- version de branche SPIP non maintenue :
vérifier la configuration dans spip_loader_config.php
- reus d’utilisation : SPL controle la connexion de l’administrateur avant de l’autoriser a lancer une mise a jour :
se connecter en webmestre, et le déclarer dans spip_loader_config.php
- Ecran blanc :

  • mauvaise version de PHP
  • trop ancienne version de spip_loader : mettre a jour par FTP
  • fichier .json incorrect ou inadapté : à effacer par FTP avant de relancer
  • accès distant aux serveurs SPIP impossible

 Accès interdit : les protections et restrictions

[-art184] est un outil ’sensible’ qu’il est vivement conseillé de ne pas laisser accessible sur un site en production.
Son utilisation est d’ailleurs restreinte, par plusieurs biais : sur un site SPIP installé [13], puisque le système d’authentification des auteurs est opérationnel, le scripte refuse de s’initialiser si le navigateur utilisé n’a pas préalablement identifié et connecté un webmestre (l’auteur n°1 sauf si étendu, voir ci-après).
S’il s’agit d’un usage autorisé, spip_loader teste sa mise-à-jour à la dernière version, et peut proposer et charge les dernières versions de SPIP, désormais enregistrées dans un fichier téléchargé spip_list.json en se restreignant donc aux seules versions ’maintenues’ (donc désormais les versions 4.x en ce début 2023). Le script contrôle aussi la version de PHP disponible sur votre serveur (minimum désormais attendu pour SPIP en PHP 7.4 minimum : cf Html, php : qu’est-ce que c’est que ce charabia ?).


Les informations ci-après sont devenues obsolètes, avec les améliorations apportées sur SL !

 Vérifier la version à charger

Voyez aussi quelle version de SPIP vous souhaitez : en cette période de migration,
Si vous voulez vérifier, c’est pas difficile !
Ouvrez le fichier spip_loader.php dans un éditeur de texte (cf. Editeurs du WebMestre PC), et regardez [14] :
- la ligne 62 vous indique le numéro de version de votre fichier chargeur
- la ligne 16 précise la source du dépôt des zip stables à utiliser :
define('_URL_SPIP_DEPOT','https://files.spip.org/');
- la ligne 30 indique la version qui sera chargée (ici la version stable de spip-3.0 )
define('_CHEMIN_FICHIER_ZIP', 'spip/stable/spip-3.0.zip');

  • suggestion : pour visualiser d’avance la version qui va être chargée (et donc éviter de mauvaises surprises !), insérer en ligne
    [+718]  
              ."( "._CHEMIN_FICHIER_ZIP." ) "

     [15]
    Nota Bene : Le fichier spip-3.0.zip contient le dernier patch stable de la branche 3.0, ce qui évite de réécrire le spip-loader à chaque correction de bug.

  1. pour recharger la dernière version stable d’une branche (applicable à la 2.1 et à la 3.0 ), il vous suffira de rajouter le numéro de branche au nom pour obtenir, par exemple en ligne 30 :
    define('_CHEMIN_FICHIER_ZIP', 'spip/stable/spip-2.1.zip');
  1. si vous vouliez utilisez spip_loader pour recharger la version svn [16],

passer cette ligne en commentaire PHP en posant un dièse # au début,
et retirez celui en début de la ligne 27
# define('_CHEMIN_FICHIER_ZIP', 'spip/dev/SPIP-svn.zip');.

  1. si vous voulez recharger une vieille version en Archives par spip_loader , c’est aussi possible ; ligne 31 dans :
    define('_CHEMIN_FICHIER_ZIP', 'spip/stable/spip-3.0.zip');

    remplacez stable par archives
    remplacez spip-3.0.zip par le nom exact du fichier de la version de spip que vous voulez
    (en consultant la page d’archives SPIP https://files.spip.org/spip/archives/)... puis...

Renvoyez par FTP votre fichier modifié [17] sur votre serveur, et... gogogo !

Note : On pou(rr)vait imaginer d’ajouter plusieurs radio-boutons, pour choisir la version, mais cela serait inutilement lourd.. la ré-écriture de 2018 a préféré une liste déroulante de choix !

 Possibilités supplémentaires

Depuis la version 2.2.0 de spip_loader, il accepte à présent dans l’URL une variable nommée dest permettant de spécifier le nom du plugin dont le paramètre chemin est le Zip dans https://files.spip.org. Celui est installé dans le répertoire ./plugins [18]. Le nom ne peut comporter que des caractères alpha-numériques, tiret, souligné ou point.

Et si vous avez besoin d’urgence d’un patch correctif, justement rajouté sur la version courante en .dev mineur (la prochaine version SPIP de votre niveau), pour info [19]

spip_loader permet d’avoir la 3.2_dev, il suffit de remplacer la ligne :
https://zone.spip.org/trac/spip-zon...
’zip’ => 'spip/stable/spip-3.2.zip',
par :
’zip’ => 'spip/dev/SPIP-branche-3.2.zip',

..

Vous pouv(i)ez même forcer directement la version à télécharger,en indiquant en paramètre le chemin final du zip voulu : spip_loader.php?chemin=spip%2Farchives%2FSPIP-v3.2.4.zip

 Des pièges possibles ?

- le plus gênant : se tromper de version (voir ci-dessus !)
- le plus piégeant : utiliser un PHP trop ancien (le message dit juste "Impossible...")
- le plus récent (Oct.2018) : prendre un php trop récent [20]
- le plus tordu : vérifier l’activation de l’extension php_openssl.dll dans php.ini [21]
- le plus fréquent : encore des problèmes sur les droits /répertoires du serveur
- le plus bête : omettre l’extension .php (ou modifier le nom du script [22] )
- le plus oublié : avoir saturé son espace disque
- le plus c...ensuré : "Ce site n’est pas encore configuré"... alors que vous voulez juste relancer spip_loader.php pour mettre une autre branche. Effacez tout avec FTP...
- le plus actuel [23] : passer en PHP 5 (voir Des cas..... résolus ! PHP5, même pour spip_loader ! )
- le plus normal : le rechargement fonctionne-t-il avec votre version d’IE ?
- le plus improbable : s’il y avait un souci avec IPv6 ?
- le plus drastique : certains hébergeurs brident tout téléchargement hors FTP,
- le plus caché : parfois des soucis d’op-cache perturbent certains scripts opérant la BDD,
- le plus vicieux : et si vous étiez bloqué par une ré-écriture simultanée du Zip sur le serveur d’origine... recommencez à l’URL initiale spip_loader.php?(sans rien derrière.) !
Par exemple, si vous avez fait une erreur de frappe dans l’appel du script spip_loader, voilà ce qu’affichera votre navigateur :

Spip_loader.php NotFound
L’adresse URL que vous avez indiquée ne correspond pas à un fichier chargé sur le serveur : vérifiez l’orthographe...

 Encore quelques cas de blocage rencontrés sur spip_loader

A l’occasion du passage en SPIP 4.o sur divers sites (déjà en spip-4.o-dev ou encore en spip-v3.2.11) petit florilège de soucis à contourner :
- d’abord être dans une version suffisante de PHP
sinon art refusera de fonctionner
- charger une version très récente du spip_loader.php
sinon vous risquez de retomber sur une page blanche incompréhensible, voire si vous avez de la chance avec un vieux php 5.6, un beau message d’erreur Une erreur déclanchée par un vieux Spip_LOADER
- effacer les divers fichiers de configuration liés à spip_loader
sinon vous risquez de partir sur la version de dev suivante (qui change la BDD)
- mettre à jour un maximum de plugins aux dernières versions compatibles,
avant de tenter la montée de version de SPIP
- contrôler la compatibilité totale des plugins (en installant Verifier plugins) par https://contrib.spip.net/4882
- verifier la configuration éventuelle de spip_config
- vider le cache SPIP juste avant de faire la mise-à-jour, le désactiver et recommencer : il y a parfois des relents bizarres...
- après rechargement, passer sur la page de gestion des plugins et vérifier leur actualisation (surtout dans les plugins Inactifs et incompatibles, à Montrer..
- recharger ceux-ci par Téléchargement d’une URL d’archive (liens sur Contrib ou Plugins)

 Sécuriser les SPIP installés

Cette opération de mise-à-jour de SPIP est recommandée pour suivre les mises-à-jour de SPIP, surtout les mises-à-jour de sécurité (il actualise aussi l’écran de sécurité) ; mais cela peut être aussi générateur de problèmes, lors d’une montée importante en termes de modifications de tables, et/ou de compatibilité avec les plugins. Il est donc recommandé de d’abord valider une montée de version sur une copie du site de production, avec les mêmes contextes d’environnement PHP ; d’ailleurs le script vous propose de rester dans la même branche de SPIP, mais avec la dernière version à jour, y compris le dernier écran de sécurité, même sur une ancienne branche.

Mais il reste fortement déconseillé de laisser ce script accessible dans votre répertoire de travail : en effet, la protection décrite si dessous ne peut être garantie ; elle n’est d’ailleurs pas prise en charge par l’écran de sécurité, et les manipulations du script sont potentiellement dangereuses : effacez ce script après usage !

 Autres "goodies"

Sur un site SPIP déjà installé, l’exécution de spip_loader contrôle que la mise-à-jour est bien lancée par un utilisateur connecté, authentifié en Administrateur et WebMestre, et même en webmestre N°1 [24] ; sinon, vous recevrez un message d’erreur, qui pourra vous paraître incompréhensible alors que vous êtes webmestre !!

Accès à Spip_loader.php INTERDIT (sauf au WebMestre).
La sécurité du script spip_loader.php a détecté que l’utilisateur connecté -identifié par son cookie de session- n’était pas Webmestre n°1.

Autorisation d’un autre Webmestre : vous pouvez rajouter d’autres auteurs identifiés comme webmestre autorisé en modifiant la ligne 9, le define('_SPIP_LOADER_UPDATE_AUTEURS', '1'); : il suffit de changer le numéro d’auteur, ou mieux de vous rajouter comme ci-dessous :
define('_SPIP_LOADER_UPDATE_AUTEURS', '1:2:9');
Vous pouvez même fixer directement la définition de ces auteurs-webmestres en collant cette ligne dans un fichier de configuration spécifique, nommé spip_loader_config.php [25] ; de la sorte vos droits d’accès restent permanents (dès lors que vous êtes authentifiés sous SPIP), meme en cas de mise-à-jour autonome du spip_loader.

 A ne pas oublier !

Ce script spip_loader fait beaucoup de choses, mais il vous faudra néanmoins penser à quelques opérations complémentaires à faire par FTP en même temps que vous téléchargez le script à la racine de votre site internet,par exemple créer le fichier de configuration complementaire du Spip_loader

Il faut(x !)/fallait encore créer manuellement [26] de rajouter ligne 499 la création automatique de ces dossiers...]] les dossiers répertoires de personnalisation :

  • ./lib
  • ./squelettes
  • ./plugins
  • ./plugins/auto

Et ensuite, vous pourrez charger les plugins voulus... mais il est préférable de les faire charger par SVP : ./ecrire/?exec=admin_plugin !

 Quelques interdits !

Le fonctionnement de spip_loader (comme quelques autres scripts/fonctionnalités de SPIP liées à SVP, utilise des facilités parfois jugées sensibles [27] pour la sécurité de leurs clients par certains hébergeurs : ils brident alors PHP, et donc ’on sait’ que :
- Infomaniak n’accepte pas spip_loader nativement, mais SPIP Arno* nous fournit la réponse :

pas de souci. Il faut aller dans l’espace de gestion de son site pour « régler les limites de PHP », et « allow_url_fopen ». Par défaut c’est bloqué, et donc ça bloque spip_loader et les mises à jour de plugins.

- les pages perso de Free présentent de nombreuses limitations...

Le chargement du Spip_loader


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

[1SPIP n’est pas une exception... il faut bien "booter", c’est-à-dire démarrer un programme initial !

[2Lorsque le texte source du spip_loader.php s’affiche sur l’écran de votre navigateur, enregistrez tout le contenu du fichier dans un nouveau fichier, auquel vous donnerez exactement le nom de spip_loader.php ; attention, ce fichier de source PHP ne devra pas être modifié par un editeur ou traitement de texte !
Vous devrez ensuite déposer (par FTP) une copie de ce fichier dans le dossier racine de votre /nouveau ou futur/ site Web.

[3Même si spip_loader contrôle les versions minimum de PHP pour SPIP, il ne valide pas forcement les Pre-requis Techniques maxis contraints...

[4"Chargeur de SPIP" se traduit par ’spip_loader’ !

[5Une protection interne (en ligne 9 de Spip_loader.php) réserve ce traitement aux seuls Webmestres déclarés en BdD !

[6Vous récupérerez un fichier .txt en texte, donc non interprété par le serveur ; à vous de le renommer en suffixe .php avant de le transférer sur votre espace SPIP, sans oublier éventuellement de corriger les _SPIP_LOADER_UPDATE_AUTEURS autorisés !

[7Pas de test de version PHP maxi pour votre vieux SPIP : mettez à jour le PHP et le SPIP, vous gagnerez, en performances, et en fonctionnalités !

[8Les dernières versions de Spip s’orientent vers un PHP 7 !

[9Vous pourrez suivre les modifications du source en consultant ses révisions !

[10Soit la branche 3.2 depuis fin 2017, la branche 4.1 depuis 2022 !

[11Désormais spip_loader.php se recharge avec la dernière version...

[12Liste des auteurs habilités à inscrire en dur dans define('_SPIP_LOADER_UPDATE_AUTEURS', '1');.

[13[art184] vérifie qu’un SPIP est déjà installé en testant la présence du fichier ./ecrire/inc-version.php, qu’il suffit de virer pour avoir l’accès ; peut-être que de contrôler l’accès à ./config/chm,d.php dans un répertoire plus protégé serait plus efficace ?

[14Les numéros de ligne ont pu changer depuis, selon les versions.

[15Ou mieux, le patch proposé ci-dessous !

[16SPIP-svn est la version en-cours d’amélioration, pas toujours finalisée, -on vous aura prévenu- bugs possibles ;-) !

[17Ne modifiez pas le nom du script php : il se ré-utilise lui-même pour finaliser correctement le chargement !

[18Ce n’est pas l’installation standard dans ./plugins/auto/, gérée par SVP.

[19Non encore testé : attention, un problème à une époque https://core.spip.net/issues/4158, et pas le temps, de refaire des essais pour voir si le problème est toujours présent, donc ...

[20SPIP 3.2 n’est pas compatible avec PHP 7.2 cf. https://core.spip.net/issues/4138 !

[21Merci Francky2 https://core.spip.net/issues/4194 en particulier dans EasyPHP !

[22Le script de chargement automatique spip_loader.php est récursif, ce qui exprime qu’il se ré-appelle lui-même automatiquement en-cours de traitement ; son nom de fichier sur votre serveur doit donc rester inchangé.

[23désolé, c’etait vrai en 2012-2013 ! Depuis... voir plus haut !

[24Testé en 3.0.10->3.0.11 sur spip_loader.php[2.4.3] ; il ne suffit plus d’être un Webmestre déclaré en base de données : cela n’a aucun rapport avec le droit "SPIP_LOADER_UPDATE" !

[25Mais contrairement aux commentaire indiqué, celle-ci ne peut-etre placé dans un potentiel ./config/mes_options.php car sa lecture interviendrait trop tardivement...

[26Dernière minute 31/10/2018 : une proposition de Jack31 imagine ([[C’est fait en Spip_Loader 3.0.5 ! La création de ./plugins /auto et ./lib !

[28SPIP n’est pas une exception... il faut bien "booter", c’est-à-dire démarrer un programme initial !

[29Lorsque le texte source du spip_loader.php s’affiche sur l’écran de votre navigateur, enregistrez tout le contenu du fichier dans un nouveau fichier, auquel vous donnerez exactement le nom de spip_loader.php ; attention, ce fichier de source PHP ne devra pas être modifié par un editeur ou traitement de texte !
Vous devrez ensuite déposer (par FTP) une copie de ce fichier dans le dossier racine de votre /nouveau ou futur/ site Web.

[30Même si spip_loader contrôle les versions minimum de PHP pour SPIP, il ne valide pas forcement les Pre-requis Techniques maxis contraints...


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

Article publié le 26 février 2023, et actualisé en février 2023 .

Répondre à cet article