WebsiteBaker Community Forum

General Community => Development 2.10.x and up => Topic started by: ruebenwurzel on March 08, 2026, 09:47:15 AM

Title: Zebra_Image.php: Deprecated Meldung PHP 8.5
Post by: ruebenwurzel on March 08, 2026, 09:47:15 AM
Hallo,

die framework/media/Zebra_Image.php erzeugt unter PHP 8.5 eine deprecated Meldung bezüglich 'imagedestroy' Ursache sind die Zeilen 1971 - 1980:

Code: [Select]
// free memory
imagedestroy($this->source_identifier);
imagedestroy($identifier);

// for PHP 8.0.0+ imagedestroy is no-op (https://php.watch/versions/8.0/gdimage)
// and we have to use unset()
if (version_compare(PHP_VERSION, '8.0.0', '>=')) {
   unset($this->source_identifier);
   unset($identifier);
}

Unter PHP 8.5 sollte dieser Block ersetzt werden durch:

Code: [Select]
// free memory
unset($this->source_identifier, $identifier);

Matthias
Title: Re: Zebra_Image.php: Deprecated Meldung PHP 8.5
Post by: sternchen8875 on March 08, 2026, 10:58:45 AM
imagedestroy() ist seit PHP 8.0.0 ohne Funktion. Davor war diese Funktion zur Bereinigung der genutzten Ressourcen im Vorgang zuständig. ab PHP 8.0.0 erfolgt die Verwaltung innerhalb von PHP über Objekte und für diese ist keine solche Bereinigung notwendig.
Eine Versionsabfrage mit anschließendem unset() ist unnötig, da WB in den aktuellsten Versionen ein PHP-Minimum von 8.1.0 hat.
Alle Zeilen mit imagedestroy() können bedenkenlos gelöscht werden.
Admin Comment: korrigiert, da technisch falsch bzw nicht ausreichend
unset() diente in der Ressoucenverwaltung dazu, einzelne Elemente zu leeren. In der Objektverwaltung ab PHP 8.0.0 führt sie dazu, das diese Elemente aus dem Objekt gelöscht werden, d.h. $this->source_identifie würde bei einem erneuten Zugriff nicht mehr existieren und einen fatal error erzeugen. Besser verwenden:
Code: [Select]
$this->source_identifier = null;$identifier ist hier nur eine lokale Variable im Objekt, die automatisch verfällt, wenn dieses Objekt verlassen wird

aus
Code: [Select]
// free memory
imagedestroy($this->source_identifier);
imagedestroy($identifier);

// for PHP 8.0.0+ imagedestroy is no-op (https://php.watch/versions/8.0/gdimage)
// and we have to use unset()
if (version_compare(PHP_VERSION, '8.0.0', '>=')) {
   unset($this->source_identifier);
   unset($identifier);
}

wird also
Code: [Select]
// free memory
        $this->source_identifier = null;
        return true;



weitere Vorkommen in der aktuellen WB-Version
der letzte Eintrag bezieht sich auf das  Droplet Text2Image und deren Install

(https://i.gyazo.com/7a1dc409b7b100e596954025cf5c1685.png)