4 Deprecated sur image_graver en PHP 8.1 #5485

Closed
opened 2 months ago by philippeboussin · 8 comments

Bonjour,

J'ai 4 Deprecated en SPIP 4.1.17 et PHP 8.1 :

PHP Deprecated:  strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in .../ecrire/inc/filtres_images_lib_mini.php on line 1166
PHP Deprecated:  strlen(): Passing null to parameter #1 ($string) of type string is deprecated in .../ecrire/inc/filtres_images_lib_mini.php on line 1169
PHP Deprecated:  strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in .../ecrire/inc/filtres_images_lib_mini.php on line 1180
PHP Deprecated:  str_replace(): Passing null to parameter #1 ($search) of type array|string is deprecated in .../ecrire/inc/filtres_images_lib_mini.php on line 1182
Bonjour, J'ai 4 Deprecated en SPIP 4.1.17 et PHP 8.1 : ``` PHP Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in .../ecrire/inc/filtres_images_lib_mini.php on line 1166 PHP Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in .../ecrire/inc/filtres_images_lib_mini.php on line 1169 PHP Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in .../ecrire/inc/filtres_images_lib_mini.php on line 1180 PHP Deprecated: str_replace(): Passing null to parameter #1 ($search) of type array|string is deprecated in .../ecrire/inc/filtres_images_lib_mini.php on line 1182 ```
Owner

Un peu plus de détails sur l’origine du problème ? une image particulière ?

Un peu plus de détails sur l’origine du problème ? une image particulière ?
b_b added this to the 4.1 milestone 2 months ago
b_b added the
bug
label 2 months ago

Il semble que ce soit lié au plugin Oembed dans le cas de figure signalé ici spip-contrib-extensions/oembed#31

EDIT: Je suis moins sûre ! Cela se produit aussi avec un modèle image dans lequel j'ai plusieurs filtres (image_recadre, image_reduire)...

~~Il semble que ce soit lié au plugin Oembed dans le cas de figure signalé ici https://git.spip.net/spip-contrib-extensions/oembed/issues/31#issue-8587~~ EDIT: Je suis moins sûre ! Cela se produit aussi avec un modèle image dans lequel j'ai plusieurs filtres (image_recadre, image_reduire)...

Bonjour,

J'ai identifié la source de ces Deprecated en PHP 8.1. Dans image_graver, il y a un extraire_attribut($img,'src') or voici ma syntaxe SPIP:

[(#SET{image,#GET{image}|replace{src=,data-src=}|inserer_attribut{class,lazyload}})]

Bonjour, J'ai identifié la source de ces Deprecated en PHP 8.1. Dans `image_graver`, il y a un `extraire_attribut($img,'src')` or voici ma syntaxe SPIP: `[(#SET{image,#GET{image}|replace{src=,data-src=}|inserer_attribut{class,lazyload}})]`

J'ai fini par comprendre... Dans certains squelettes d'article, j'avais appliqué à la balise #TEXTE un filtre image_reduire: [(#TEXTE|image_reduire{1000,0})]

Et comme dans mon modèle image.html, je remplaçais l'attribut src par data-src (pour faire du Lazy-loading avec le JS Lazysizes), le Deprecated était inévitable dans image_graver.

Je ne ferme pas le ticket car c'est à priori légitime de vouloir faire cela ?!?

Mais n'est-ce pas trop spécifique que la fonction image_graver puisse regarder dans data-src si src n'est pas présent ? D'autant que l'avenir du lazy-loading, c'est d'utiliser l'attribut natif html5 loading="lazy"...

J'ai fini par comprendre... Dans certains squelettes d'article, j'avais appliqué à la balise `#TEXTE` un filtre `image_reduire`: `[(#TEXTE|image_reduire{1000,0})]` Et comme dans mon modèle `image.html`, je remplaçais l'attribut `src` par `data-src` (pour faire du Lazy-loading avec le JS Lazysizes), le `Deprecated` était inévitable dans `image_graver`. Je ne ferme pas le ticket car c'est à priori légitime de vouloir faire cela ?!? Mais n'est-ce pas trop spécifique que la fonction `image_graver` puisse regarder dans `data-src` si `src` n'est pas présent ? D'autant que l'avenir du lazy-loading, c'est d'utiliser l'attribut natif html5 loading="lazy"...
Owner

Je ne ferme pas le ticket car c'est à priori légitime de vouloir faire cela ?!?

J'ai un gros doute sur la légitimité d'un <img> sans src, comme même.

Tu pourrais ajouter l'attribut nécessaire à ton JS sans toucher à l'attribut d'origine avec extraire_attribut.

> Je ne ferme pas le ticket car c'est à priori légitime de vouloir faire cela ?!? J'ai un gros doute sur la légitimité d'un `<img>` sans `src`, comme même. Tu pourrais ajouter l'attribut nécessaire à ton JS sans toucher à l'attribut d'origine avec extraire_attribut.

Oui ce serait une solution avec une image de basse qualité, mais retirer src au profit de data-src est la méthode simple préconisée pour utiliser le JS Lasysizes, peut-être pour des histoires de perf ?!? (https://github.com/aFarkas/lazysizes#recommendedpossible-markup-patterns).

Dans mon cas, j'ai retiré le image_reduire sur ma balise #TEXTE.

Oui ce serait une solution avec une image de basse qualité, mais retirer `src` au profit de `data-src` est la méthode simple préconisée pour utiliser le JS Lasysizes, peut-être pour des histoires de perf ?!? (https://github.com/aFarkas/lazysizes#recommendedpossible-markup-patterns). Dans mon cas, j'ai retiré le `image_reduire` sur ma balise `#TEXTE`.
Owner

Corrigé donc, reporté 4.2 et 4.1 (on est bien gentils tout de même !)

Corrigé donc, reporté 4.2 et 4.1 (on est bien gentils tout de même !)
marcimat closed this issue 1 week ago
Poster

Merci @marcimat !

Merci @marcimat !
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.