Magento SOAP 500内部エラー応答


7

SOAP経由でデータを取得しようとすると、500内部エラー応答が返されます。

私が持っているものは機能しており、500内部エラーを与えていません:

<?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.
}



?>

次に、foreachループで関数を呼び出そうとすると(上記のコメントを参照):

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'];
}

サーバーからの応答は内部エラー500になりました。最大90のSKU /製品IDがあります。

誰がエラーが何であるか知っていますか?


サーバーのmax_execution_timeとmemory_limitを増やしてください
Abdul

回答:


1

未テストですが、次のようなものが機能するはずです:

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'];
    }
}

そのままでは機能せず、phpコードが失敗したために何かが欠落しています。空白のページを表示しています。
Troels Johannesen 2015

http://example.com/api/soap/?wsdlブラウザ経由でアクセスするとどうなりますか?またerror.log、500エラーの詳細については、Webサーバーファイルを確認してください。
B00MER 2015年

説明されているように、私は石鹸のURLでストアから完全な出力を取得する問題はありません。
Troels Johannesen 2015

foreachループで関数を呼び出すと、次のように記述します。productPrices-> Foo_Bar($ id); それは正しいではありませんか?
Troels Johannesen 2015


1

Magentoが内部サーバーエラーで例外をスローしたようです。私が追加することによってスローされたすべての例外をログに記録するのを助けました

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

ファイルthrow new Mage_Core_Exception($message);throwExceptionメソッドの行の前app/Mage.php

特定のエラーを見つけるのに役立つことを願っています


1

ログ

詳細については、ログファイルを参照してください。

  • Magentoのログ<magento_root>/var/log/*-特にsystem.logexception.log
  • 新しいレポートファイルが作成されたかどうかも確認する <magento_root>/var/report/
  • ウェブサーバーのログ/var/log/nginx/(error|access).logまたはApacheを使用する場合/var/log/(apache|httpd)/*.log
  • PHP(-fpm)ログ-しばしばここに /var/log/fpm-php.www.log

SSL

SoapClientのデフォルトの動作は、ブラウザの動作とは異なります。特に次のリダイレクトなどはhttp正しいですか?たぶんあなたはhttpsが必要ですか?

ウェブサーバーの設定

たぶん、あなたのウェブサーバーはブラウザのリクエストだけを受け入れるように設定されています。たとえば、UserAgentルールによって...?または、APIルートに特別な保護があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.