PHP 8 sodium et SPIP 4.1 Fatal Error

Bonjour,

Je suis en train de migrer Un SPIP 3.1 a 4.0 (ça a bien marché) et là je passe de 4.0 a 4.1 en php 7.4, et j’ai ce problème, énoncé dans la doc :

le nouveau système d’authentification de SPIP nécessite l’extension Sodium, au besoin si vous avez une erreur de type Erreur d’exécution …/prive/squelettes/body.html | File […]/ecrire/src/Chiffrer/Chiffrement.php Line 68 : Call to undefined function Spip\Chiffrer\sodium_crypto_secretbox_keygen() pour activer Sodium dans votre php.ini, décommenter la ligne
extension = sodium.so

Mon site est bien visible mais impossible d’accéder à l’interface privé, je suis allé voir sur le fichier php.ini de mon hebergeur et pas de trace de l’option sodium.

Quand j’active php 8, là je vois bien l’option sodium dans le php.ini ,
mon site est apparu, j’ai pu accéder à mon interface privé, mais pas aux plugings, j’ai vidé le cache via ftp pour voir ce que cela pouvais faire et depuis, j’ai un fatal error de ce type :

Fatal error: Uncaught Error: Call to undefined function xml_parser_create() in /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/xml/sax.php:207 Stack trace: #0 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/xml/valider.php(351): xml_sax_dist(’<paquet\n\tprefix…’, false, Object(ValidateurXML), ‹ paquet.dtd ›, ‹ utf-8 ›) #1 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/plugins/infos_paquet.php(35): xml_valider_dist(’<paquet\n\tprefix…’, false, Array, ‹ paquet.dtd ›, ‹ utf-8 ›) #2 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/plugins/get_infos.php(122): plugins_infos_paquet(’<paquet\n\tprefix…’, ‹ aide ›, ‹ plugins-dist/ ›) #3 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/plugins/get_infos.php(68): plugins_get_infos_un(‹ aide ›, -1, ‹ plugins-dist/ ›, Array) #4 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/inc/plugin.php(67): plugins_get_infos_dist(Array, -1, ‹ plugins-dist/ ›, true) #5 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/inc/plugin.php(253): liste_plugin_files(‹ plugins-dist/ ›) #6 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/inc/plugin.php(855): liste_plugin_valides(Array, true) #7 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/inc/plugin.php(783): ecrire_plugin_actifs(Array, false, ‹ force ›) #8 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/inc_version.php(518): actualise_plugins_actifs() #9 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/spip.php(17): include_once(’/datas/vol1/w4a…’) #10 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/index.php(3): include(’/datas/vol1/w4a…’) #11 {main} thrown in /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/xml/sax.php on line 207

Ça me dépasse complétement, et j’ai jamais autant trimé a mètre a jour un SPIP… si quelqu’un peut m’aider là-dessus?

On dirait que tu réussi à activer sodium mais qu’il te manque du coup l’extension xml :slight_smile:

Merci de ton messsage, j’ai activé sodium en passant a PHP 8, mais dans le fichier php.ini de mon hebergement, je vois bien l’endroit où il y a les extensions, il ya XMLwriter… Je suis chez Yulpa.
et il dit :
extension = xmlwriter.so ; custom value from iWal

Je ne voie pas comment y mettre une extension aussi, j’ai l’impression que tout est déjà activé.

Je relance pour savoir si quelqu’un peu m’aider là-dessus, l’hébergeur ne répond pas, et le site est HS depuis 24H…

Le site en question :immanence.web4me.fr

Merci !

difficile de répondre à la place de ton hébergeur, ce qui est sur c’est qu’il faut « libxml » et « dom » qui normalement sont activés par défaut avec PHP…

J’ai voulu tenté une nouvelle installation, en PHP 8, cela se lance et après impossible d’accéder à l’étapes 2.

J’ai ça :

�SM�A=ۿ���l�8�z݅%�!D4����0tz*IAOw����6��1kW��ؼz�꽪�+�uB���՝�1@]ͫ���B���J����g�a���� F�{�l’�#ٵu��6��w {TѴCt�D^����G��72��A�H&����BE�۔C�%M�!,������]'MB �d^����3(����ˎ�!�vC��sM+��R��Vi��S�W�F!���Y�����2s�Af��EI:@o��DX��z��X���"~�g,�����q�;ᶕBx���cca�M�v�l( +{���R�h��m���]�b6ء3N��%�����y�k�=�L�i}���7��M��F�U<;« �䐡��F� �tj���/�Tӣ|����˞ .������Q���PK��\V� �\��spip.png�PNG IHDR<(���� pHYs�� cHRMm�s��3�@pn�b1xr���LBIDATx���i�UUa���R͇ج)�Sbie�P4a��4 Y�D�D4@&���!٠eif�4� �� � � » R���ׇ�����h�.8�}������Zk�}�Z[[%�c�lm�ᘂs0}��’��;X�}ꄎ�4�?߇�nN<}rʺ�h�����;��N�|��S$��8>ǠF|�cT��O��g5��Xe{�ꌏЯ����U�)�Y���!U�?n�G�q��z0�x]��#k�WWL�7�ո��� ���7�����N�Ͻa`(z�ʎ ��z�p� x}������/.��?ީ����e�y>��v���D�0lBs6��e�XRl���<K�nQ�ۋ��w՛�~���a��,�7��De0

chelou… je sais pas, désolé :frowning:

Visiblement les fichiers privé.php, spip.php , pupblic.php ont complétement buggé, @Natacha_Courcelles sur un autre sujet m’a dit que cela venait quand le PHP n’était pas le bon, je suis pourtant en PHP 8, pour un spip 4.2 et qu’il fallait les éditer, mais je ne sais pas faire ça.

Je mets quelques capture de mes fichiers cités. Si ça peut aider.



hum, on dirait que tes fichiers ont mal été transférés. Tu avais utilisé spiploader?

On dirait que le loader à malheureusement écrit les fichiers de façon compressés. Ça ressemble au problème #39 - Ne fonctionne plus en dessous de php 7.4 - spip_loader - SPIP on GIT qu’on a pourtant résolu en version 6.1.1 du loader.

Il y a peut être un autre cas particulier avec la version de PHP que tu utilises…
Peut être peux tu vérifier que tu as aussi l’extension « Zip » d’activée ? et auquel cas, l’activer et relancer le Loader ?

Les mises a jour de 3.1 a 4.0, en php 7.4 se sont bien passé, pour passé en 4.2 je suis passé en php 8 et là, ça me fait ça.

Je retente une installation de 3.1 a 4.0 pour voir.

L’extension ZIP semble activé, j’ai mis une capture des extensions activent un peu plus haut.

Et oui, j’utilise toujours spip_loader, avec le mode binaire en transfert de fichier.

J’ai retenté une installation, en php 7.4

de 3.2 a 4.0 ça marche (un souci de css mais rien du coté de php)
quand je passe de 4.0 a 4.1, mon souci de CSS est rétablie, par contre j’ai encore une fois des logos qui ont disparu… J’ai eu ça avec un autre site sur OVH, et c’est très galère, le site à 20 ans d’archives, des centaines de documents…

Et j’ai un fatal error dans l’administration privé, pas possible d’y accéder :

Fatal error: Uncaught Error: Call to undefined function Spip\Chiffrer\sodium_crypto_secretbox_keygen() in /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/src/Chiffrer/Chiffrement.php:68 Stack trace: #0 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/src/Chiffrer/Cles.php(31): Spip\Chiffrer\Chiffrement::keygen() #1 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/src/Chiffrer/SpipCles.php(142): Spip\Chiffrer\Cles->generate(‹ secret_du_site ›) #2 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/src/Chiffrer/SpipCles.php(55): Spip\Chiffrer\SpipCles->getKey(‹ secret_du_site ›, true) #3 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/src/Chiffrer/SpipCles.php(34): Spip\Chiffrer\SpipCles->getSecretSite() #4 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/inc/securiser_action.php(305): Spip\Chiffrer\SpipCles::secret_du_site() #5 /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/inc/securiser_action.php(315): secret_du_site() # in /datas/vol1/w4a127519/var/www/immanence.web4me.fr/htdocs/ecrire/src/Chiffrer/Chiffrement.php on line 68

Je décide de passer en php 8, et là j’ai maintenant « site en travaux Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de votre compréhension. »

J’ai l’impression que je peux faire la manip dix fois, et d’avoir dix problèmes différents.

Si je reviens en php 7.4 (qui n’a pas Sodium) j’ai un message d’erreur :
Erreur d’exécution …/prive/squelettes/body.html | File […]/ecrire/src/Chiffrer/Chiffrement.php Line 68 : Call to undefined function Spip\Chiffrer\sodium_crypto_secretbox_keygen()

Aucun hébergeur, aucun outil de développement local, genre xampp, ne peut fournir une version de PHP récente (7.2 ou plus) sans l’extension sodium. Aucun. C’est livré avec.

Par contre, pour une raison qui m’échappe, ils peuvent fournir une configuration de PHP par défaut où l’extension est désactivée.

Je crois que c’est @Jack31 le premier qui avait trouvé, il y a quelques années, comment faire dans le panel d’administration fournit par son hébergeur (alwaysdata ?) pour activer les extensions manquantes.

J’invite les gens qui rencontrent ce problème à utiliser la fonction de recherche de ce forum. Il existe sûrement une solution documentée à ce propos. Et j’invite celleux qui ont réglé ce problème à créer ou enrichir les éventuelles pages de wiki de contrib pour rencenser les hébergeurs et les méthodes de configuration :wink:

Bonjour James,
Merci pour ta réponse, je ne suis pas programmateur, et pour utiliser un outil de recherche, il faut déjà savoir ce que l’on cherche et où est le problème.

En php 7.4, version SPIP 4.1 mon site s’affiche, mais impossible d’accéder à l’interface privé :

Erreur d’exécution …/prive/squelettes/body.html | File […]/ecrire/src/Chiffrer/Chiffrement.php Line 68 : Call to undefined function Spip\Chiffrer\sodium_crypto_secretbox_keygen()

En php 8.0, Sodium est bien activé, et pourtant ça ne marche pas non plus, j’ai tout le site qui plante.

J’attends un signe de mon hébergeur, mais visiblement, il est pas pressé de répondre

Manifestement, tu as besoin de trouver comment activer l’extension sodium chez ton hébergeur pour la version de PHP que tu utilises: 7.4.

En haut à droite de cette page, tu as une petite loupe. Si tu cliques dessus, tu peux taper un mot (par exemple « sodium ») et lancer la recherche.

Sur le lien des pages wiki que j’ai signalé, tu as aussi une zone de recherche, tu peux taper le le même mot et voir ce qui est proposé.

Je ne connais pas ton hébergeur et je ne sais pas ce qu’il fournit à ses clients pour configurer les briques techniques de leurs sites. Ça m’étonnerait qu’il les laisse en plan sans informations, sans guide. Il y a sans doute une FAQ, des pages d’explications… des trucs qu’on ne peut pas faire à leur place…

Il faut regarder les logs de PHP dans ce cas là, si tu y as accès via ton pannel, tu dois avoir une erreur Fatale quelque part. Sinon tu peux tenter de les faire afficher toi même temporairement via le fichier config/mes_options.php. Cf: Les aides au débuggage de squelettes - SPIP