spip 4.1. , function secret_du_site()

Bonjour, après mise à jour vers spip 4.1. , plus de site public !
À un moment de la mise à jour j’ai vu passer « mettre à jour la bdd » mais ça n’avait pas abouti …
Une enquête poussée m’a conduit à découvrir qu’en supprimant function secret_du_site() dans /ecrire/inc/securiser_action.php , le site public était à nouveau accessible. Mais je ne peux plus accéder à /ecrire , la page=login conduit à une page blanche. Cela sur serveur local sur mon pc perso, debian apache2 php7.4 . Sur le site en ligne équivalent, blo.ouvaton.org, tout s’est déroulé sans aucun problème. (j’ai posté ce même message sur blog.spip.net/)

Quelle version de PHP et as tu l’extension sodium ?

php 7.4 et, libsodium23 1.0.18-1 installé (me dit synaptic : «Network communication, cryptography and signaturing library» . Il faut cela ? pas installé : r-cran-sodium)

Une page blanche est très souvent une erreur PHP. Tu dois avoir cette erreur dans les logs d’erreur PHP si tu as accès à ce fichier.

Sinon tu peux faire afficher temporairement ces erreurs via ton fichier mes_options.php par exemple Les aides au débuggage de squelettes - SPIP

Connaitre l’erreur permettrait d’en savoir un peu plus sur le problème

Bonjour et merci ,
donc par mes options au lieu de la page blanche j’ai maintenant :
Fatal error: Uncaught Error: Class ‹ Spip\Chiffrer\SpipCles › not found in /…/spip/ecrire/auth/spip.php:72 Stack trace: #0 … auth_spip_dist() #1#5
En suivant le fil (malgré que je n’y comprenne rien) cela semble assez logique puisque supprimant (grâce à quoi le site public réapparait) function secret_du_site() dans /ecrire/inc/securiser_action.php qui return SpipCles::secret_du_site(); qui manque donc sans doute pour spip.php:72 , etc.
Plus exactement j’ai repris la function secret_du_site() de spip 4.0.5 qui elle return $GLOBALS[‹ meta ›][‹ secret_du_site ›];

Est-ce que je ne pourrais pas agir via phpmyadmin sur la clé [‹ meta ›][‹ secret_du_site ›] (de 64 caractères) ?
L’effacer ? c’est écrit «* Renvoyer le secret du site (le generer si il n’existe pas encore)*»

(je devrais avoir accès à error.log puisque serveur sur pc perso , mais … dans mon 000-default.con j’ai ErrorLog ${APACHE_LOG_DIR}/error.log dans mon <Directory /…/machin/truc/ il y a un error_log , vide . Je l’ai renommé error.log . Sans doute une erreur de ma part quand j’ai installé configuré apache, il y a 10 ans. Mais une chose à la fois !)

Bon, là c’est l’important…

Alors peut-tu vérifier la présence de et casse des fichiers :

  • ecrire/inc/chiffrer.php
  • ecrire/src/Chiffrer/*.php (notamment SpipCles.php)

Oui ils sont bien tous là (4 .php dans ecrire/src/Chiffrer/ dont SpipCles.php) !
J’ai dézippé spip 4.1.* et vérifiez différences (avec Meld) pas de raison d’un manque a priori, l’erreur ne pourrait pas venir de la bdd, de cette mise à jour qui m’a semblé avorter ?

Déjà ça donc, ça veut dire qu’il n’arrive pas à ouvrir / ou lire / trouver le fichier ecrire/src/Chiffrer/SpipCles.php qui est censé être chargé par le fichier ecrire/inc/chiffrer.php (pour SPIP 4.1 du moins c’est comme ça)

Comme tu vois, juste avant ecrire/auth/spip.php:72, il y a include_spip('inc/chiffrer'); qui est chargé de démarrer le fichier (ecrire/inc/chiffrer.php) si ça n’a pas encore été fait, qui lui-même charge les autres…

Mais du coup je ne vois pas comment tu peux avoir cette erreur…

À moins que tu ais un autre fichier inc/chiffrer.php quelque part ailleurs ? (dans squelettes/ ou un plugin perso ?) [note il n’en existe aucun les plugins / squelettes de la forge git.spip.net actuellement)

Si tu ne sais pas, tu peux aussi te faire un fichier de test temporaire tel que squelettes/test.html

<h1>#SQUELETTE</h1>

<?php
echo include_spip('inc/chiffrer');
?>

Appeler domain.tld/?page=test doit te sortir quelque chose comme

squelettes/test.html

ecrire/inc/chiffrer.php 

Bonjour (et encore merci, c’est cool d’être ainsi aidé, et apprendre)
donc ⋅ non pas d’autre fichier chiffrer.php (bien un seul trouver par recherche depuis la racine du site),
⋅ le squelettes/test.html me sort bien ce qu’il faut, avec les boutons d’administration (si je le complète d’une boucle rubrique c’est ok),
J’ai désactiver par phpmyadmin mes plugins, aucun effet.
Est-ce que le problème pourrait venir de ma configuration apache ? (ça marchait depuis 10 ans mais spip 4.1 est peut être plus intransigeant sur une bonne configuration. Dans phpmyadmin j’ai ce message : $cfg[‹ TempDir ›] (/var/lib/phpmyadmin/tmp/) n’est pas accessible. phpMyAdmin est incapable de mettre en cache les modèles et de ce fait sera lent. Ce qui ne posait pas soucis jusqu’à présent …)

Salut @FranLou, hésite pas à passer sur https://irc.spip.net pour qu’on en discute en direct et qu’on tente de régler ça ensemble :slight_smile:

Bon, j’ai téléchargé la spip-dev-master, et je l’ai mis à la place de la 4.1.1 (non pas en écrasant la 4.1.1, ce que je faisais pour mettre à jour, étant ainsi passé de spip 4.0.2 à 4.1.0 , puis rétropédalant comme je vous ai expliqué en découvrant ce pb avec la function secret_du_site() ). Du coup je suis rentré dans une phase d’installation, recherche de la bdd, etc. Qui c’est bien passé ! (mis à part (*) Je ne savais pas ou plus que c’était possible, mais il fallait bien que j’essaye qcq chose… J’ai remis mes plugins , et, tout va bien ! Qu’est-ce qui a bien pu se passer !!! J’ai un copain développeur de haut vol qui m’a dit un jour «c’est comme ça des fois y a un bit qui devrait être à 0 mais qui est à 1 …» . Si c’est comme ça souvent ça doit être invivable la vie de développeur ! (moi je pourrai pas. Avoir des problèmes dont il est préférable d’écarter la recherche de causes, si c’est souvent, ça me semblerait insupportable).
Bon merci, c’était sympa de vous voir opérer. Et merci pour spip : j’ai fait une dizaine de site associatif sous spip (bénévolement) depuis ~15 ans , je ne connais que spip !

  • htaccess inopérant
    Avertissement : la configuration de votre serveur HTTP ne tient pas compte des fichiers .htaccess. Pour pouvoir assurer une bonne sécurité, il faut que vous modifiiez cette configuration sur ce point, ou bien que les constantes _DIR_TMP & _DIR_CONNECT (définissables dans le fichier mes_options.php) aient comme valeur des répertoires en dehors de /home/franlou/public.

Pourtant j’avais aussi, sous votre conseil d’ailleurs je crois, mis un spip à côté, et renommer l’ancien _spip. Mais ça n’avait rien changé. Un zip corrompu peut être ?

Trop content que ça fonctionne chez toi :slight_smile: