Part-DB / Part-DB-legacy

[LEGACY Version] Open Source Electronic Parts Database using PHP and MySQL

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

"Einkaufsinformationen hinzufügen" Exception in php-8.0

antonfischl1980 opened this issue · comments

Hallo,

Version 0.5.14
PHP 8.0.25 bzw. 7.4.33

wenn mit PHP 8.0 versucht wird Einkaufsinformationen hinzuzufügen, wird in lib/Base/DBElement.php:121 eine Exception geworfen.
$id ist keine gültige ID! $id="0"
Nach Downgrade auf PHP 7.4 können wieder Einkaufsinformationen hinzugefügt werden.

ich habe die if-Abfrage in Zeile 120 in 2 if-Abfragen abgeändert und damit rausgefunden das wahrscheinlich der vordere Teil
((! is_int($id)) && (! ctype_digit($id)) && (! is_null($id))) die Exception triggert
Ich vermute daher das sich is_int, ctype_digit oder is_null zwischen 7.4 und 8.0 unterschiedlich verhalten

same here

Sollte jetzt in der neuen Version 0.5.15 behoben sein.

Leider ist die Typisierung in dieser Part-DB version relativ schwach, und es werden Datentypen wild hin und her gemischt, was solche Fehler auftreten lässt. Ich verstehe nicht wieso es in den PHP7 versionen noch funktioniert hat, aber jetzt sollte es funktionieren (auch wenn der Fix nicht sonderlich schön ist).

In der neugeschriebene Part-DB Version ist das deutlich besser aufgebaut, sodass da solche Fehler hoffentlich nicht auftreten (bzw. es werden alle unterstützen PHP Versionen automatisiert getestet).