La nouvelle version (format phar)

Spip_loader

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]. Ce fichier est d’usage ’sensible’ donc à réserver au Webmestre (avec acccès FTP c’est mieux !), et à effacer après usage.

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, 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] ! Enfin attention à quelques interdits...

Article publié le 21 mai 2012, et actualisé en février 2023

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

N.B. : cet outil (avec son article rappelant l’historique) a beaucoup évolué depuis les origines ; le fichier source en version 5.x est désormais au format compressé, et vous pouvez pérenniser les plupart des modifications de paramétrage, dans un fichier annexe à créer spip_loader_config.php, si elles n’ont pas été intégrées au fil des évolutions..

A recharger sur https://www.spip.net/spip-dev/INSTALL/spip_loader.php.

 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 v5 (accompagnant SPIP 4 & 3.2)
Ce qui change le moins (en apparence ;-)

Le script charge automatiquement tout les fichiers de SPIP, et assure aussi la création automatique des dossiers répertoires de téléchargements complémentaires :

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

Par contre il n’effectue aps la création du dossier de personnalisation des squelettes, (pas plus que ne le fait SkelEditor /à vérifier dans les dernières versions ?/ : vous devrez donc éventuellement utiliser votre FTP pour cela !

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 (5.x..y) à utiliser !
désormais (depuis les version 3.xx cf. Les évolutions de spip_loader (historique)), le chargeur se remet à jour tout seul avec la dernière version [9] ...
- le choix de la branche de version maintenue SPIP 4.2 à installer (voir ci-dessous)
- Le niveau de version de la branche de SPIP est 4.2.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 !

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 (par ftp, ssh, ...) pour pouvoir réparer a minima en cas de problème ...

Le spip_loader est désormais (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, fonctionnalité désormais automatisée
- version de branche SPIP non maintenue :
vérifier la configuration dans spip_loader_config.php
- restriction d’utilisation : SL contrôle la connexion de l’administrateur webmestre avant de l’autoriser à lancer une mise à jour :
se connecter en webmestre, et si n°auteur>1 se déclarer dans spip_loader_config.php
- Ecran blanc :

  • mauvaise version de PHP
  • trop ancienne version de spip_loader : mettre à jour par FTP
  • fichier .json incorrect ou inadapté : à effacer par FTP avant de relancer
  • accès distant aux serveurs SPIP impossible (hélas, cela arrive, rarement !
    Bravo SPIP

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

 Vérifier la version SPIP à charger

Voyez aussi quelle version de SPIP vous souhaitez : en cette période de migration et de changements tant PHP que SPIP, on peut avoir quelques surprises...
Si vous voulez vérifier/changer, c’est pas difficile !
Ouvrez le fichier spip_list.json dans un éditeur de texte (cf. Editeurs du WebMestre PC), et regarder la liste des versions affichées : la modification pour recharger aussi une version 3.2 n’est pas trop difficile à construire par analogie : exemple.
{"api":2,"versions":{"dev":"spip\/dev\/spip-master.zip","4.2.0":"spip\/archives\/spip-v4.2.0.zip","4.1.7":"spip\/archives\/spip-v4.1.7.zip","4.0.9":"spip\/archives\/spip-v4.0.9.zip","3.2.17":"spip\/archives\/spip-v3.2.17.zip"},"default_branch":"4.2","requirements":{"php":{"master":"7.4.0","4.2":"7.4.0","4.1":"7.4.0","4.0":"7.3.0","3.2":"5.4.0"}}}

Renvoyez par FTP votre fichier modifié, et protégez-le en écriture [10] sur votre serveur, et... gogogo !

Attention : une utilisation rapide de spip_loader après sa dernière modification en 5.3) m’a carrément planté un SPIP installé, configuré en SPIP 3.2 dans le fichier de config...
La 3.2 n’étant plus maintenue il m’a écrasé la version SPIP 3.2.16, puis commencé à modifier la BdD quand j’ai voulu travailler : la cata !!!!

 Possibilités supplémentaires

La version 2.2.0 de spip_loader acceptait dans l’URL une variable nommée chemin permettant même de forcer directement la le fichier à 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, mais non testé depuis [11]

 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 [12]
- le plus tordu : vérifier l’activation de l’extension php_openssl.dll dans php.ini [13]
- 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 [14] )
- 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 [15] : 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

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 spip_loader 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
- vérifier la configuration éventuelle de spip_loader_config.php
- vider le cache SPIP [16] 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 par defaut le webmestre N°1 [17] ; 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 définissant dans le fichier de configuration du SL ./spip_loader_config.php, 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');
 ; de la sorte vos droits d’accès restent permanents (dès lors que vous êtes authentifiés sous SPIP), même 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 complémentaire du Spip_loader

Il faut(x !)/fallait encore créer manuellement [18] les dossiers répertoires de personnalisation :

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

Par contre le script n’assurre toujours pas la création directe d’un dossier de personnalisation des squelettes (non plus que SkelEditor /à vérifier ?/ :

  • ./squelettes
    Et ensuite, vous pourriez charger les plugins voulus... mais il est préférable de les faire charger par SVP : ./ecrire/?exec=admin_plugin, voire désormais -pour les experts- charger les modifications de SPIP avec Composer et/ou SPIP-Cli !

 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 [19] 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 8 !

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

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

[11On aurait meme pu imaginer de ’détourner’ ce spip_loader pour lui faire télécharger un WP ;- !

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

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

[14Le 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é.

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

[16Vous pouvez vider le cache par FTP : effacer ./tymp/cache !

[17Pour ré-utiliser Spip_loader, il ne suffit pas d’être un Webmestre déclaré en base de données, qui n’a aucun rapport avec le droit "SPIP_LOADER_UPDATE" : il faut être connecté en n°1 ou auteur déclaré : voir ci-dessous !

[18Dernière minute 31/10/2018 : une proposition de Jack31 imagine ([[C’est fait depuis Spip_Loader 3.0.5 ! La création de ./plugins /auto et ./lib, de rajouter ligne 499 la création automatique de ces dossiers...

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

[21Lorsque 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.

[22Mê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 21 mai 2012, et actualisé en février 2023 .

Répondre à cet article