2012-01-04 7 views
0

私はのSoapClientを使用しよう:のSoapClient:のfaultcode WSDL

try { 
    $client = new SoapClient('http://someurl/somefile.wsdl'); 
} catch (SoapFault $e) { 
    var_dump($e); 
} 

私はとキャッチエラーがあります。

["faultstring"] => "SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://someurl/somefile.wsdl' : failed to load external entity "http://someurl/somefile.wsdl" 
["faultcode"] => "WSDL" 

を私は手動でhttp://someurl/somefile.wsdlをダウンロードすることができ、このファイルのためのfile_get_contentsことができます。私は前にそれを別のコンピュータで使用しようとしました。 PHPまたはApache設定の可能性のある問題。

phpとapacheの最新のアップデートがあるArchLinux。私はすべてのPHP拡張機能を有効にしようとしました。

+0

WDSLファイルのバージョンは何ですか? SoapClientは1.1と1.2しかサポートしていません。 WSDLがバージョン2の場合、SoapClient経由でWSDLを使用することはできません。 –

答えて

0

ブラウザでfile_get_contents()を使用してwsdlを取得できましたか?

wsdlファイルが使用されていても、私は同じfaultstringでArchlinuxに似た問題が発生しました。同じコードが他のArchlinuxマシンとWindows XPボックスで問題なく動作していました。

調査の結果、ブラウザでページにアクセスしようとしたときに問題が発生したことが判明しました。コマンドラインからアクセスしたスクリプトは、期待どおりに動作しました。次に、上記のfile_get_contents()を使用してwsdlファイルを直接ダウンロードするようにスクリプトを変更しました。それは私に警告"php_network_getaddresses: getaddrinfo failed: Name or service not known"を与えました。

あまりにも多くのチュートリアル(SO、またはこの1つ:http://albertech.net/2011/05/fix-php_network_getaddresses-getaddrinfo-failed-name-or-service-not-known/)はまだ問題を解決していません。しかし、私は問題を導入したことを発見しました。私は、Arch(無線をより良く扱うため)のインストールからNetworkManagerを実行していました。そして数週間後にrc.confのDAEMONSセクションの最後にmysqldとhttpdを追加しました。 ApacheのDNS解決を破った。

2つの解決策があります(手動で起動サーバーに戻るか、他のネットワークマネージャーに戻ってください)私はwicdに切り替えて、もう一度問題に遭遇しませんでした。

関連する問題