Pluginmanager wirft Fehler, Plugin selbst läuft einwandfrei

Hallo,

ich arbeite gerade an einem Plugin, um Preise aus dem Shop nach Ebay zu übertragen. Dazu nutze ich diese SDK: https://github.com/davidtsadler/ebay-sdk-php

Folgendes Problem: Der Plugin-Manager verschluckt sich an der guzzlehttp dependency der SDK… Wenn ich den Plugin-Manager aufrufe, bekomme ich diese Fehlermeldung:

SyntaxError: Unexpected token <
    at http://localhost/shopware5/engine/Library/ExtJs/ext-all.js?201708081547:21:5361
    at Object.Ext.globalEval (http://localhost/shopware5/engine/Library/ExtJs/ext-all.js?201708081547:21:5369)
    at Object.success (http://localhost/shopware5/backend/base?file=bootstrap&loggedIn=1502977820:530:5)
    at Object.callback (http://localhost/shopware5/engine/Library/ExtJs/ext-all.js?201708081547:21:67496)
    at i.onComplete (http://localhost/shopware5/engine/Library/ExtJs/ext-all.js?201708081547:21:422670)
    at i.onStateChange (http://localhost/shopware5/engine/Library/ExtJs/ext-all.js?201708081547:21:422314)
    at XMLHttpRequest. (http://localhost/shopware5/engine/Library/ExtJs/ext-all.js?201708081547:21:17406)

In der Console bekomme ich außerdem diesen Fehler:

{
    "sourceClass": "Ext.JSON",
    "sourceMethod": "decode",
    "msg": "You're trying to decode an invalid JSON String: Fatal error: Unsupported operand types in \custom\plugins\RgEbaySync\vendor\guzzlehttp\guzzle\src\Client.php on line 236",
    "message": "You're trying to decode an invalid JSON String: Fatal error: Unsupported operand types in \custom\plugins\RgEbaySync\vendor\guzzlehttp\guzzle\src\Client.php on line 236"
}

Das ist die Code Zeile 236 der Teufelsdatei:

$result = $options + $defaults;

Sie liegt in dieser Funktion:

    private function prepareDefaults($options)
    {
        $defaults = $this->config;

        if (!empty($defaults['headers'])) {
            // Default headers are only added if they are not present.
            $defaults['_conditional'] = $defaults['headers'];
            unset($defaults['headers']);
        }

        // Special handling for headers is required as they are added as
        // conditional headers and as headers passed to a request ctor.
        if (array_key_exists('headers', $options)) {
            // Allows default headers to be unset.
            if ($options['headers'] === null) {
                $defaults['_conditional'] = null;
                unset($options['headers']);
            } elseif (!is_array($options['headers'])) {
                throw new \InvalidArgumentException('headers must be an array');
            }
        }

        // Shallow merge defaults underneath options.
        $result = $options + $defaults;


        // Remove null values.
        foreach ($result as $k => $v) {
            if ($v === null) {
                unset($result[$k]);
            }
        }

        return $result;
    }

Der eigentliche Spaß an der Sache ist, dass das Plugin einwandfrei funktioniert. Ich habe einfach das Laden der SDK auskommentiert, den Pluginmanager ohne Probleme gestartet, das Plugin aktiviert und danach im Code die SDK wieder „einkommentiert“. Das Plugin läuft wie ne eins, aber der Pluginmanager hat dann Bauchschmerzen…

Hatte vielleicht schon jemand das Problem und eine Lösung gefunden? Oder hat jemand eine Idee, was falsch läuft? Ich verstehe auch überhaupt nicht, warum er in dieser Zeile überhaupt iwas mit JSON-Dekodierung machen will…

Vielen Dank und schönen Gruß :slight_smile:

Ich glaube hier vermischen sich zwei Meldungen: ExtJS erwartet wahrscheinlich von einem XHR Request eine JSON Antwort. Bekommt aber als Antwort:

Fatal error: Unsupported operand types in \custom\plugins\RgEbaySync\vendor\guzzlehttp\guzzle\src\Client.php on line 236

Die wiederum kommt weil es in dem Script einen Fehler gab. 

Okay, interessanter Gedanke… das würde bedeuten, dass das Problem bei dem guzzle-script ist und nicht bei der Ebay SDK selber, oder?

Vermutlich. Guck doch mal in den Chrome Dev Tools auf dem Network Reiter welche XHR Requests so laufen und ob es da einen Request gibt, der zu deiner Meldung passt.

Hmm… nein, die Fehlermeldung in der Konsole erscheint, während die XHR Requests noch laufen :confused: danke dir trotzdem :slight_smile: