[spip-dev] Bug avec spip_loader 4.2.0 ???

Bonjour,

à toutes fins utiles je vous signale une étrangeté constatée tout à l’heure en passant de la version SPIP 3.2.5 à la version 3.2.8 via spip_loader.php 4.2.0.
A la fin du process (?, enfin j’espère) j’ai obtenu un le message suivant :
Fatal error: Uncaught Error: Call to undefined function spip_sanitize_from_request() in /var/www/html/mydoc/ecrire/inc/filtres.php:361
Stack trace:
#0 /var/www/html/mydoc/ecrire/public/composer.php(92) : eval()'d code(86): filtre_sanitize_env(Array, Array)
#1 /var/www/html/mydoc/ecrire/public/parametrer.php(128): html_a13d832d5e0fd438476eea3860fa764c(Array, Array)
#2 /var/www/html/mydoc/ecrire/public/assembler.php(314): public_parametrer_dist(‘prive/squelette…’, Array, ‘’, NULL)
#3 /var/www/html/mydoc/ecrire/public/assembler.php(278): public_produire_page_dist(‘prive/squelette…’, Array, -1, ‘’, Array, Array, 0, NULL)
#4 /var/www/html/mydoc/ecrire/public/assembler.php(602): inclure_page(‘prive/squelette…’, Array, NULL)
#5 /var/www/html/mydoc/ecrire/inc/utils.php(3234): evaluer_fond(‘prive/squelette…’, Array, NULL)
#6 /var/www/html/mydoc/ecrire/public/evaluer_page.php(51) : eval()'d code(9): recuperer_fond(‘prive/squelette…’, A in /var/www/html/mydoc/ecrire/inc/filtres.php on line 361

Le pied de page indique que je suis bien passé en 3.2.8.
La fonction spip_sanitize_from_request() appelée par /var/www/html/mydoc/ecrire/inc/filtres.php existe bien dans /var/www/html/mydoc/ecrire/inc/utils.php

465 function spip_sanitize_from_request($value, $key, $sanitize_function=‘entites_html’) {
466 → if (is_array($value)) {
467 → → if ($key==’*’) {
468 → → → $key = array_keys($value);
469 → → }
470 → → if (!is_array($key)) {
471 → → → $key = [$key];
472 → → }
473 → → foreach ($key as $k) {
474 → → → if (!empty($value[$k])) {
475 → → → → $value[$k] = spip_sanitize_from_request($value[$k], $k, $sanitize_function);
476 → → → }
477 → → }
478 → → return $value;
479 → }
480 → // si la valeur vient des GET ou POST on la sanitize
481 → if (!empty($value) and $value == _request($key)) {
482 → → $value = $sanitize_function($value);
483 → }
484 → return $value;
485 }

Pour l’instant je n’ai pas constaté de dysfonctionneemnt de mon site. Après une relance de spip_loader.php, le message n’a pas réapparu.
Mon serveur est un Debian 9.13 up2date et j’utilise PHP 7.0.33-0+deb9u10 (cli) (built: Oct 6 2020 17:08:28) ( NTS )

Cordialement,
Philippe

Bonsoir,

J'ai également eu ce message après un passage de 3.2.5 à 3.2.8,
également avec spip_loader 4.2.0 .

Un redémarrage du service php a réglé le problème : vider le cache des
scripts (si cela est utilisé) .

Depuis samedi dernier, jour de la mise à jour, plus aucune alerte.

Cordialement,

Eric

C'est sûrement encore l'opcache qui traîne
Cf https://core.spip.net/issues/4261

JL