Hallo! Wir haben Shopware von 5.5.8 auf 5.6 aktualisiert und nun haben wir Probleme mit der REST-API. Einen Artikel erzeugen klappt. Aber einen Artikel aktualisieren klappt gar nicht mehr.
Erstelle ich bspw. zum Test einen Artikel mit den Namen “Testartikel”, wird er erzeugt. Möchte ich dann mit $client->put() den Artikelnamen ändern in “Artikeltest”, bekomme ich den Fehler “Could not decode json”, “json_last_error: Syntaxerror” zurück. Lasse ich bei $client->put() den Artikelnamen “Testartikel”, gibt es ein ok zurück.
Das Problem bezieht sich aber nicht nur auf Name, sondern auch auf alle anderen Felder, egal ob metaTitle, description oder sonstwas. Sobald sich der zu aktualisierende Wert von dem in der Datenbank unterscheidet, gibt es den oben genannten Error zurück. Bei propertyValues ist es sogar so dass der Error kommt wenn es einfach nur angegeben ist.
Für mich macht das keinen Sinn. Mit Shopware 5.5.8 hat es wunderbar geklappt, am Script für die Aktualisierung der Artikel hat sich nichts geändert. Auch habe ich in der Shopware-Doku geschaut ob sich etwas verändert hat, aber mir ist nichts aufgefallen.
Ich habe jetzt vom Shop ein Backup eingespielt, also von 5.6 wieder zurück nach 5.5.8. Dabei habe ich dann herausgefunden dass das Problem nicht mit Shopware 5.6 zu tun hat, sondern mit der PHP-Version.
Stelle ich auch bei SW 5.5.8 die PHP-Version von 7.0 auf 7.2 um und möchte per REST-API einen Artikel aktualisieren, bekomme ich in den meisten Fällen einen Error 500 zurück.
Als Beispiel ein Artikel in der Datenbank mit der Artikelnr. 61610 und dem Namen “Tasche”.
Update-Beispiel 1 (Name ist gleich geblieben) gibt ein 200 zurück:
Ich habe das Problem gefunden. Es war ein Plugin dass mit IonCube verschlüsselt wurde und nur bis PHP 7.0 kompatibel war. Nachdem ich es deinstalliert und gelöscht habe, klappte es auch wieder mit der REST-API, Shopware 5.6 und PHP 7.2.