Neu Connector Überarbeitung für PHP8.0

svenyo

Gut bekanntes Mitglied
18. Februar 2016
114
3
Ich versuche gerade übergangsweise den Connector für modified PHP8.0 tauglich zu bekommen. Getestet wurden bislang normale Produkte sowie Kategorien. Diese werden bereits übertragen, aktualisiert und auch gelöscht. Sobald jedoch etwas gelöscht wurde, wird weder das gleiche Produkt/Kategorie noch irgendwelche neuen Produkte/Kategorien in den Shop geladen bzw. aktualisiert.
Beim Connectorabgleich kommt untenstehende Fehlermeldung.
In den Modulen Identity.php bzw. MySql.php habe ich schon nachgeschaut, konnte aber keinen Fehler finden. Sobald ich in meiner Xampp-Testumgebung einmal die PHP-Version auf 7.45 zurückstelle und einen Abgleich vornehme funktioniert alles problemlos. Auch wenn ich nun die PHP Version wieder auf 8.0.25 hochstelle funktioniert der Abgleich tadellos - Aber nur solange bis einmal etwas gelöscht wird?!

Weiß jemand einen Rat?



Abgleich-Protokoll:
Bitte beachten Sie, dass JTL-Wawi federführend ist!
Im Shop-Backend vorgenommene Änderungen können nicht mehr automatisiert abgeglichen werden und führen somit zu Datenverlust.
Prüfe Endpointkonfiguration.
Abgleich gestartet für 'TestXampp2060'.
Onlineshop-Abgleich beendet für 'TestXampp2060'.


Fehler:
Exception: strlen(): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given
strlen(): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given
Kategorien-Senden-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der JTL-Wawi notwendig sind!
Exception bei category.push: strlen(): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given

strlen(): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given

Response: {"result":null,"error":{"code":0,"message":"strlen(): Argument #1 ($string) must be of type string, jtl\\Connector\\Model\\Identity given","data":"Exception 'TypeError' (Code: 0) with message 'strlen(): Argument #1 ($string) must be of type string, jtl\\Connector\\Model\\Identity given' in C:\\xampp\\htdocs\\mod2060\\jtlconnector\\vendor\\jtl\\connector\\src\\Core\\Database\\Mysql.php:567"},"jtlrpc":"2.0","id":"unknown"}
Exception bei category.push: strlen(): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given

strlen(): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given

Response: {"result":null,"error":{"code":0,"message":"strlen(): Argument #1 ($string) must be of type string, jtl\\Connector\\Model\\Identity given","data":"Exception 'TypeError' (Code: 0) with message 'strlen(): Argument #1 ($string) must be of type string, jtl\\Connector\\Model\\Identity given' in C:\\xampp\\htdocs\\mod2060\\jtlconnector\\vendor\\jtl\\connector\\src\\Core\\Database\\Mysql.php:567"},"jtlrpc":"2.0","id":"unknown"}
bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.TfkZCNi6gkN(String , Object , Boolean , NetworkCredential )
bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.bxuZCvBQsrt(String , Object , Boolean , NetworkCredential )
bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.TfkZCNi6gkN(String , Object , Boolean , NetworkCredential )
 

svenyo

Gut bekanntes Mitglied
18. Februar 2016
114
3
Also soweit es meine begrenzten PHP-Fähigkeiten zulassen liegt es anscheinend
anfolgendem Ausdruck in der Datei \\jtlconnector\\vendor\\jtl\\connector\\src\\Core\\Database\\Mysql.php (Zeile 567):

if ((is_array($key) && is_array($value)) || (strlen($key) > 0 && strlen($value) > 0)) {

Wenn ich es richtig verstanden habe wird diese Variable als Objekt gespeichert, soll aber als String gespeichert werden.
 
Zuletzt bearbeitet:

svenyo

Gut bekanntes Mitglied
18. Februar 2016
114
3
Ich habe jetzt testweise in der Datei \\jtlconnector\\vendor\\jtl\\ connector\\src\\Core\\Database\\Mysql.php die Zeile 567 abgeändert von:

PHP-Code:
if ((is_array($key) && is_array($value)) || (strlen($key) > 0 && strlen($value) > 0)) {
zu

PHP-Code:
if ((is_array($key) && is_array($value))) {
Nun erscheint keine Fehlermeldung mehr und alles funktioniert. Kann mir jemand sagen wofür der gelöschte Teil

PHP-Code:
(strlen($key) > 0 && strlen($value) > 0)
eigentlich gedacht sein könnte? Da unter PHP7.4 dieser ja nicht stört.

Jetzt habe ich allerdings das Problem, dass Artikel bzw. Varkombis nicht mehr gelöscht werden können, da sonst diese Fehlermeldung erscheint:

Exception: Attempt to assign property "deleteUnusedVariations" on null
Attempt to assign property "deleteUnusedVariations" on null
Artikel-Löschen-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der JTL-Wawi notwendig sind!
Exception bei product.delete: Attempt to assign property "deleteUnusedVariations" on null

Attempt to assign property "deleteUnusedVariations" on null

Response: {"result":null,"error":{"code":0,"message":"Attempt to assign property \"deleteUnusedVariations\" on null","data":"Exception 'Error' (Code: 0) with message 'Attempt to assign property \"deleteUnusedVariations\" on null' in C:\\xampp\\htdocs\\mod2060\\jtlconnector\\src\\jtl\\Connector\\Modified\\Mapper\\Product.php:278"},"jtlrpc":"2.0","id":"unknown"}
Exception bei product.delete: Attempt to assign property "deleteUnusedVariations" on null

Attempt to assign property "deleteUnusedVariations" on null

Response: {"result":null,"error":{"code":0,"message":"Attempt to assign property \"deleteUnusedVariations\" on null","data":"Exception 'Error' (Code: 0) with message 'Attempt to assign property \"deleteUnusedVariations\" on null' in C:\\xampp\\htdocs\\mod2060\\jtlconnector\\src\\jtl\\Connector\\Modified\\Mapper\\Product.php:278"},"jtlrpc":"2.0","id":"unknown"}
bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.TfkZCNi6gkN(String , Object , Boolean , NetworkCredential )
bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.bxuZCvBQsrt(String , Object , Boolean , NetworkCredential )
bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.TfkZCNi6gkN(String , Object , Boolean , NetworkCredential )
Kann hier jemand kurz weiterhelfen oder einen Denkanstoss geben?
 

svenyo

Gut bekanntes Mitglied
18. Februar 2016
114
3
Code:
Fehler:
Exception: Declaration of jtl\Connector\Modified\Mapper\StatusChange::push(jtl\Connector\Model\StatusChange $status) must be compatible with Jtl\Connector\XtcComponents\AbstractMapper::push(jtl\Connector\Model\DataModel $model, ?stdClass $dbObj = null)
Declaration of jtl\Connector\Modified\Mapper\StatusChange::push(jtl\Connector\Model\StatusChange $status) must be compatible with Jtl\Connector\XtcComponents\AbstractMapper::push(jtl\Connector\Model\DataModel $model, ?stdClass $dbObj = null)
Versand/Zahlung-Senden-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der JTL-Wawi notwendig sind!
Exception bei status_change.push: Declaration of jtl\Connector\Modified\Mapper\StatusChange::push(jtl\Connector\Model\StatusChange $status) must be compatible with Jtl\Connector\XtcComponents\AbstractMapper::push(jtl\Connector\Model\DataModel $model, ?stdClass $dbObj = null)

Declaration of jtl\Connector\Modified\Mapper\StatusChange::push(jtl\Connector\Model\StatusChange $status) must be compatible with Jtl\Connector\XtcComponents\AbstractMapper::push(jtl\Connector\Model\DataModel $model, ?stdClass $dbObj = null)

Response: {"result":null,"error":{"code":64,"message":"Declaration of jtl\\Connector\\Modified\\Mapper\\StatusChange::push(jtl\\Connector\\Model\\StatusChange $status) must be compatible with Jtl\\Connector\\XtcComponents\\AbstractMapper::push(jtl\\Connector\\Model\\DataModel $model, ?stdClass $dbObj = null)","data":"Shutdown! File: C:\\Xampp\\htdocs\\mod2072\\jtlconnector\\src\\jtl\\Connector\\Modified\\Mapper\\StatusChange.php - Line: 9"},"jtlrpc":"2.0","id":"unknown"}
Exception bei status_change.push: Declaration of jtl\Connector\Modified\Mapper\StatusChange::push(jtl\Connector\Model\StatusChange $status) must be compatible with Jtl\Connector\XtcComponents\AbstractMapper::push(jtl\Connector\Model\DataModel $model, ?stdClass $dbObj = null)

Declaration of jtl\Connector\Modified\Mapper\StatusChange::push(jtl\Connector\Model\StatusChange $status) must be compatible with Jtl\Connector\XtcComponents\AbstractMapper::push(jtl\Connector\Model\DataModel $model, ?stdClass $dbObj = null)

Response: {"result":null,"error":{"code":64,"message":"Declaration of jtl\\Connector\\Modified\\Mapper\\StatusChange::push(jtl\\Connector\\Model\\StatusChange $status) must be compatible with Jtl\\Connector\\XtcComponents\\AbstractMapper::push(jtl\\Connector\\Model\\DataModel $model, ?stdClass $dbObj = null)","data":"Shutdown! File: C:\\Xampp\\htdocs\\mod2072\\jtlconnector\\src\\jtl\\Connector\\Modified\\Mapper\\StatusChange.php - Line: 9"},"jtlrpc":"2.0","id":"unknown"}
   bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.TfkZCNi6gkN(String  , Object  , Boolean  , NetworkCredential  )
   bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.bxuZCvBQsrt(String  , Object  , Boolean  , NetworkCredential  )
   bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.TfkZCNi6gkN(String  , Object  , Boolean  , NetworkCredential  )
Kann jemand weiterhelfen, auf was ich bei der folgenden Fehlermeldung achten muss, um den Fehler zu finden?
 

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
Also für PHP 8.1 musst du ohnehin den kompletten Connector Core migrieren. Ob das nachhaltig ist, da selbst noch dran zu werkeln in der Hoffnung dass es noch lange hält? Irgendwann ist es vorbei. Aber es gibt ja auch einen fast fertigen Connector für Modified unter PHP 8.1 - der ist nichts?
 

shishaguru

Aktives Mitglied
2. April 2022
10
0
Hat es schon jemand geschafft den Connector mit Modified 3.0.2 php 8.1 zum laufen zu bringen ? Wäre sehr daran interessiert. Lg
 

Ähnliche Themen