Magento SOAP 500 Interne Fehlerantwort

7

Ich erhalte eine interne Fehlerantwort von 500, wenn ich versuche, Daten über SOAP abzurufen.

Was ich habe, funktioniert und gibt mir keine 500 internen Fehler:

<?php
$client = new SoapClient('http://example.com/api/v2_soap/?wsdl');
$session = $client->login('xxx', 'xxx');
$complexFilter = array(
    'complex_filter' => array(
        array(
            'key' => 'type',
            'value' => array('key' => 'in', 'value' => 'simple,configurable')
        )
    )
);
$result = $client->catalogProductList($session, $complexFilter);

foreach ($result as $key => $value) {
    $id = $value->product_id;
    echo $id;
   // productPrices($id); <-- this issue causes the error.
}



?>

Wenn ich dann versuche, eine Funktion in der foreach-Schleife aufzurufen (siehe Kommentar oben):

function productPrices($id){
    $client = new SoapClient('http://example.com/api/soap/?wsdl');
    $session = $client->login('xxx', 'xxx');
    $att = array("visibility","sku","special_price", "price");
    $arguments = array( $id, NULL, $att);
    $resultPrice = $client->call($session, 'catalog_product.info', $arguments);
    echo $resultPrice['visibility'].",".$resultPrice['sku'].",".$resultPrice['special_price'].",".$resultPrice['price'];
}

Die Antwort, die ich vom Server erhalte, ist jetzt interner Fehler 500. Ich habe maximal 90 SKUs / Produkt-IDs.

Weiß jemand, was der Fehler sein könnte?

Troels Johannesen
quelle
Bitte erhöhen Sie max_execution_time & memory_limit auf Ihrem Server
Abdul

Antworten:

1

Ungetestet, aber so etwas sollte funktionieren:

class Foo_Bar {
    $_client = new SoapClient('http://example.com/api/soap/?wsdl');
    $_session = $client->login('xxx', 'xxx');

public function productPrices($id) {
    $client = $this->_client;
    $session = $client->login('xxx', 'xxx');
    $att = array("visibility","sku","special_price", "price");
    $arguments = array( $id, NULL, $att);
    $resultPrice = $client->call($session, 'catalog_product.info', $arguments);
    echo $resultPrice['visibility'].",".$resultPrice['sku'].",".$resultPrice['special_price'].",".$resultPrice['price'];
    }
}
B00MER
quelle
Funktioniert nicht so wie es ist, fehlt etwas, da der PHP-Code von oben fehlschlägt. Leere Seite anzeigen.
Troels Johannesen
Was passiert, wenn Sie http://example.com/api/soap/?wsdlüber einen Browser darauf zugreifen ? Überprüfen Sie auch die error.logDatei Ihres Webservers , um weitere Informationen zum 500-Fehler zu erhalten.
B00MER
Wie beschrieben gibt es kein Problem, ich bekomme die volle Ausgabe aus dem Laden auf Seifen-URL.
Troels Johannesen
Wenn ich die Funktion in der foreach-Schleife aufrufe, schreibe ich: productPrices-> Foo_Bar ($ id); Ist das nicht richtig?
Troels Johannesen
magentocommerce.com/api/soap/catalog/catalogProduct/… sollte Ihnen ein funktionierendes Beispiel geben, das Sie ausprobieren können.
B00MER
1

Es scheint, dass Magento eine Ausnahme ausgelöst hat, die zu einem internen Serverfehler führt. Für mich hat geholfen, dass ich alle Ausnahmen protokolliere, die durch Hinzufügen ausgelöst werden

self::log(debug_backtrace()[0]['file'].":".debug_backtrace()[0]['line']." - ".$message, 1, 'exceptions.log');

vor der Zeile throw new Mage_Core_Exception($message);in der throwExceptionMethode in app/Mage.phpDatei

Ich hoffe, das hilft Ihnen, Ihren spezifischen Fehler zu finden

Leptoquark
quelle
1

Protokolle

Weitere Informationen finden Sie in den Protokolldateien:

  • Magento-Protokolle <magento_root>/var/log/*- insbesondere system.logundexception.log
  • Sehen Sie auch, ob neue Berichtsdateien erstellt wurden <magento_root>/var/report/
  • Webserver protokolliert /var/log/nginx/(error|access).logoder falls Sie Apache verwenden/var/log/(apache|httpd)/*.log
  • PHP (-fpm) -Protokolle - oft hier /var/log/fpm-php.www.log

SSL

Das Standardverhalten des SoapClient unterscheidet sich vom Verhalten des Browsers. Besonders nach Weiterleitungen usw. Ist das httprichtig? Vielleicht brauchen Sie https?

Webserver-Konfiguration

Möglicherweise ist Ihr Webserver so konfiguriert, dass nur Browseranforderungen akzeptiert werden. ZB nach UserAgent-Regeln ...? Oder die API-Route hat besonderen Schutz.

Vadim Justus
quelle