4

クライアントは Unleashedsoftware.com を使用して Magento ストアに接続しています。しかし、このエラーが発生します。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <SOAP-ENV:Fault>
            <faultcode>WSDL</faultcode>
            <faultstring>
                SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.domain.com/index.php/api/v2_soap/index/wsdl/1/' : Premature end of data in tag definitions line 2
            </faultstring>
        </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

http://www.domain.com/index.php/api/v2_soap/index/を閲覧すると 、Firebug から「500 内部サービス エラー」が表示されます。

http://www.domain.com/index.php/api/v2_soap/index/wsdl/1/を参照すると、有効な XML データが取得されます。

サーバーログファイルを確認したところ、次のようです。

[Thu Aug 30 22:22:25 2012] [warn] [client 92.92.92.92] mod_fcgid: stderr:  in /home/doaminuser/public_html/lib/Zend/Soap/Server.php on line 762

数日間検索してきましたが、今日、サイト全体を別のテストサーバーに複製しようとしましたが、うまくいっているようです! したがって、それはサーバーの問題のようです。

お願いします、何が問題なのか誰か分かりましたか?

この問題をデバッグするより良い方法、サンプル コード、またはデバッグのヒントはありますか。

Magento のバージョンは 1.6.2 です

ありがとうございました。

4

5 に答える 5

3

Magento サーバーがそれ自体と通信している問題が原因で、Magento の SOAP API が失敗することがよくあります。

つまり、PHP の SOAP 実装では、SOAP サーバー自体が を介して WSDL ファイルをフェッチする必要がhttpあり、ローカル ネットワーク構成の問題により、Magento が独自の WSDL をフェッチすることが妨げられます。

これをデバッグするには、Magento サーバーに SSH で接続し、次のコマンドを実行します。

curl -l 'http://www.example.com/index.php/api/v2_soap/index/wsdl/1/' > /tmp/wsdl.xml

次に、ファイルを調べwsdl.xmlます。Web サーバーからこれを実行しているため、ローカル ブラウザーから実行している場合とは異なる結果が得られる場合があります。

于 2012-08-30T17:17:15.793 に答える
0

URLを呼び出すときに同様の問題が発生しました 。http://www.store.com/index.php/api/v2_soap/?wsdl
しばらくする500 - Internal Server Errorと、Premature end of script headersメッセージとApacheエラーログにメッセージが表示されました。
丸一日調査したTimeout結果、Apache モジュール (Linux 環境の httpd.conf で構成) の -Directive が「20」に設定されているため、サーバーが 20 秒後に 500 エラーを送信することがわかりました。問題は、私の場合、Magento システムが WSDL 出力を構築するためにすべての wsdl.xml ファイルを「クロール」するのに長い時間が必要なことです (Magento SOAPv2 を使用している場合)。タイムアウト ディレクティブを確認する必要があるかもしれません。

于 2012-09-03T12:40:59.820 に答える
0

このエラーは、Magento SOAP URL で指定されたドメインの www を省略しているときに最も頻繁に発生しました。URL は、Magento 構成で指定されたベース URL と一致する必要があります。

于 2016-08-23T22:51:14.983 に答える
0

「私にはこれの記憶があります。私にとってうまくいったのは、ホスト名をサーバーの /etc/hosts に置き、127.0.0.1 に www エイリアスを追加することでした。ただし、この例では、サーバーは ISP の場所ではなく建物内にあり、 LAN には Windows コンピューターがあり、Windows ユーザーはトロイの木馬ウイルス ポルノを大量にダウンロードし、ネットワークにスパムを送り続けていたため、本当の問題はネットワーク上の Windows コンピューターにあり、サーバーや Magento にはありませんでした。 PC を fdisk した後、問題は解決しました。」

ありがとう、magento 1.6 と Windows Server 2008 でこれに 2 日間苦労しましたが、この行をホスト ファイルに追加することで ( C:\Windows\System32\drivers\etc) 問題が解決しました。

127.0.0.1   www.Domain.com

また、このファイルを修正しない限りロール リソースが 1.6 で保存されないため、magento ソープ (ロール) を修正することも忘れないでください。

MagentoRoot\app\code\core\Mage\Adminhtml\Block\Api\Tab\Rolesedit.php

これを置き換えます:

if (array_key_exists(strtolower($item->getResource_id()), $resources) && $item->getPermission() == 'allow') {

これとともに:

if (array_key_exists(strtolower($item->getResource_id()), $resources) && $item->getApiPermission() == 'allow') {
于 2012-12-30T10:04:29.867 に答える