API Article kein result

Ich habe ein Importscript mit der API-Classe(PHP) welches seriell befeuert wird von einer Weboberfläche.

Der Return ist so geregelt:

$out = $client->post('articles/', $params);
    print_r($out);

Damit bekomm ich normalerweise ergebnisse zurück wie sowas:

{"success":true,"data":{"id":197958,"location":"https:\/\/example.de\/api\/articles\/197958"}}

Nach einer mir unbekannten Anzahl von Importen kann es passieren, dass mit nichts zurückgegeben wird, also ein leerer return.

Im Server Errorlog steht dann folgendes:

2021/09/13 22:00:02 [error] 2696#2696: *3273465 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Class 'Shopware\Models\Attribute\Article' not found in /var/www/clients/client1/web1/web/engine/Shopware/Models/Article/Detail.php:324
Stack trace:
#0 /var/www/clients/client1/web1/web/engine/Shopware/Components/Api/Resource/Article.php(482): Shopware\Models\Article\Detail->__construct()
#1 /var/www/clients/client1/web1/web/engine/Shopware/Components/Api/Resource/Article.php(959): Shopware\Components\Api\Resource\Article->prepareMainDetail()
#2 /var/www/clients/client1/web1/web/engine/Shopware/Components/Api/Resource/Article.php(317): Shopware\Components\Api\Resource\Article->prepareAssociatedData()
#3 /var/www/clients/client1/web1/web/engine/Shopware/Controllers/Api/Articles.php(97): Shopware\Components\Api\Resource\Article->create()
#4 /var/www/clients/client1/web1/web/engine/Library/Enlight/Controller/Action.php(192): Shopware_Controllers_Api_Articles->postAction()
#5 /var/www/clients/client1/web1/web/engine/Library/Enlight/Controller/Dispatcher/De" while reading response header from upstream, client: IP, server: example.com, request: "POST /api/articles/? HTTP/1.1", upstream: "fastcgi://unix:/var/lib/php5-fpm/web1.sock:", host: "example.com"

Weiss jemand was das zu bedeiuten hat?

Danke und Gruss

Die Klasse ‚Shopware\Models\Attribute\Article‘ wurde nicht gefunden, aber aufgerufen. Schau mal, ob die Klasse in entsprechendem Script eingebunden ist. Falls nicht, mache das und schaue was passiert.

Ich kann den Fehler zwar nicht abfangen mit try/catch, aber ich kann ihn ignorieren.

LieferantDB > HTML Oberfläche > JS-fetch (jetzt mit catch) > Shopware Api

Dann läuft das Script wenigsten weiter.

Falls jemand weiss wie man hier einen Fehler abfängt wär ich sehr dankbar.

$out = $client->post('articles/', $params);
print_r($out);

folgend funktioniert leider nicht, bzw die ganze PHP Seite in ein try/catch zu hüllen bringt auch nix

try {
            $out = $client->post('articles/', $params);
            print_r($out);
        } catch (Exception $e) {
            echo '{"success":false,"message":"API Response Error"}';
        }

Evtl ein Problem mit dem namespace, das ist so eine PHP Eigenart, bist du in einem namespace sucht er nach namespace\Exception und das gibts halt nicht.

Versuchs mal mit

catch (\Exception $e)

also einem Backslash vor Exception.

LG Phil

1 „Gefällt mir“

Vielen Dank für diesen Tip.