Bonjour,
Suite à la montée de version de SPIP vers la 4.4.9, notre site rencontre des soucis d’erreur, avec une division par zéro (0) au sein de la fonction « image_reduire_par ». Pour palier cela nous avons ajouté cette correction temporaire à la ligne 541 du modules « ecrire/inc/filtres_images_mini.php »
Hum. de ce que je vois du code, le problème se produit lorsque tu ne passe pas de valeur d’environnement reduire_par. A mon sens c’est plus à ton squelettes de s’adapter pour s’assuire que #ENV{reduire_par} ne soit pas égal à 0 que spip d’être modifié.
Je viens de tester en spip 4.3, et cela ne marchait pas plus en l’absence de paramètre reduire_par. Je ne vois pas du reste ce qui entree la 4.3 et la 4.4 aurai put changer le comportement.
Quoi qu’il en soit, la solution de passer une valeur par defaut à #ENV{reduire_par} me parait la meilleure.
Mais nous vous assurons que dans les versions précédentes, cela fonctionnait sans cette adaptation, notre site existe et fonctionne depuis 2015 et le modèle date de cette époque.
La version de PHP qui change déjà : PHP a moins de tolérances au choses au fur de ses évolutions. Dans SPIP aussi on cast en int l’entrée (on devait typer ces paramètres en SPIP 5 d’ailleurs)…
Mais le problème principal «c’est que doit-il se passer si tu envoies image_reduire_par{0} ou image_reduire_par(null)» : dans ces cas là il est plutôt logique que ça finisse en erreur car ça ne veut rien dire. On pourrait lever une erreur dans la fonction effectivement, mais ça reviendrait au même : ça serait tout de même une erreur…
Je ne sais pas ce qu’il se passait auparavant, mais j’imagine que ça ne faisait pas forcément ce qui pouvait être attendu du code.
En fait cela provient que dans les versions précédentes nous utilisions PHP 7.2 puis 7.4. En migrant vers SPIP 4.4, nous avons aussi fait le choix de PHP 8.4. Donc, il y a un rapport entre cette anomalie de division par 0 et la version PHP utilisée sur la base de nos squelettes identiques dans tous les cas.