PHP 8 : Resource vs GdImage object problem.
GD ne retourne plus une "resource", mais une instance de GdImage.
Ça fait planter une partie des filtres images dans SPIP.
Notamment s’il y a des tests avec is_resource()
Exemple :
Warning: Trying to access array offset on value of type bool in [...]ecrire/inc/filtres_images_lib_mini.php on line 1607 à 1610 Qui provient de grosso modo : [(#CHEMIN{un_fichier.png}|image_applatir{ico})]
Docs
- https://php.watch/versions/8.0/gdimage
- La correction chez WP : https://core.trac.wordpress.org/ticket/50833
Avec la solution proposée :
Note that in PHP 7.2 and older, instanceOf operator requires an object. If you need to make your code function across PHP versions older than 7.3 through PHP 8.0, you will need an additional is_object() check:
- if (is_resource($image)) {
- if (is_resource(
image) || (is_object(
image) && $image instanceOf \GdImage)) {