1

私はこの問題の助けを探しています、そして誰かが私にその助けをくれることを願っています。エラーは次のとおりです。

致命的なエラー:SOAP-エラー:WSDLの解析:「http://example.com/index.php/api/?wsdl」から読み込めませんでした:外部エンティティ「http://example.com/index」を読み込めませんでした。 28行目の/var/www/presentacion/app/code/local/Pengo/Extension/Model/Something.phpのphp/api /?wsdl "

そして、それに接続するために使用しているコードは次のようなものです。

$this->_soap = new SoapClient(http://example.com/index.php/api/?wsdl);

そしてそれがエラーであると言うところがあります。

私はGoogle、PHPフォーラム、ここStackOverflow、Magento自体で検索を行ってきましたが、解決策はどこにも見つかりません。

私が見たのは、エラーが示すように、WSDLが解析またはロードされることはなく、その機能もまったくないということです。

私はこのように接続してみました:

$options['location'] = http://example.com/index.php/api/?wsdl;
$options['uri'] = 'urn:Magento';
$this->_soap = new SoapClient(null, $options);

このように、他の場合のようにエラーをディスパッチしませんが、他の場合のように、WSDLをロードおよび解析しないように、使用する関数はありません。

これを1か月ほど開発していて、テストを行っているので、このメッセージが表示されるので少しイライラします。本当に空で新しく、正常に動作したときにテストしました。

だからどんな助けもいただければ幸いです。

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

4

3 に答える 3

12

10回のうち9回、このエラーはMagentoがWSDLファイルをロードできないことを通知していることです。 Magentoはあなたにこれを言っています。不平を言っているのはローカルクライアントコードではありません。

MagentoはPHPSoapServerオブジェクトを使用してSOAPAPIを作成します。オブジェクトはSoapServerWSDLにもアクセスする必要があります。サーバーのコマンドラインから次のコマンドを実行してみてください

curl http://example.com/index.php/api/?wsdl

私が正しければ、上記はタイムアウト/失敗します。

DNSにはいくつかの癖があるため、サーバーがドメイン名を介してサーバー自体にアクセスできないことは驚くほど一般的です。この場合、最も簡単な修正は、サーバーのhostsファイルにエントリを追加することです。(それが意味をなさない場合は、サーバー管理者に相談してください)

于 2012-05-24T20:50:31.243 に答える
0

私が自分のために働いた唯一のものをテストしたすべてのことの後で、理由はわかりませんが、それはうまくいきました、2つの別々のマシンでこれを行っていました。それをどこかで読んだので、それを試しました。それを実行するだけで、MagentoとWebサービスが完全に機能するようになりました。これをローカルで実行しようとすると、同じエラーが発生します。

これが将来誰かに役立つことを願っています、そして彼らはこの問題のために壁に頭をぶつける必要はありません。

回答とコメントありがとうございます。

于 2012-05-29T16:45:49.667 に答える
0

アランストームはここでお金にぴったりです!

サーバーのHostsファイルを確認し、ドメインとwww.domainの両方のエントリが含まれていることを確認してください。サーバーの書き換えを行う場合は、特に重要です。

于 2014-02-18T10:40:49.787 に答える