2012-02-09 16 views
1

SOAP経由でアクセスしたいWebサービスがあります。 しかし、私はSOAP-ERRORを得る:PHPでSOAPを使用してwebserviceをロードできません。SOAP-ERRORを取得します。

Exception caught: SOAP-ERROR: Parsing WSDL: Couldn´t load from 'http://127.0.0.1:9999/info?wsdl' : failed to load external entity "http://127.0.0.1:9999/info?wsdl" 

私は手動でブラウザにURL http://127.0.0.1:9999/info?wsdlを入力した場合、その後、私は生成されたXMLファイルを見ることができます。

なぜSOAPでロードできないのですか?

私はこのようにPHPでのSOAPとURLを読み込む:

$soap = new SoapClient("http://127.0.0.1:9999/info?wsdl", array("trace" => TRUE));

私が見逃している何?

EDIT
1.1にSOAPのバージョンを設定すると、それが働いてなりません:

$soap = new SoapClient("http://127.0.0.1:9999/info?wsdl", array("trace" => TRUE, "soap_version" => SOAP_1_1)); 

EDIT 2:
私はそれはCentOSの上の両方のWindows上とUbuntuでの作業ではなく、持っている
6. PHPをCentOS 6と組み合わせると、SoapClientは動作しませんか? CentOS 6マシンで実行しているPHPバージョンは、5.3.3(もちろん)PHPで有効になっているSoapサポートです。

答えて

2

あなたの回答とアイデアをありがとう!しかし、私たちは問題を発見しました。 SELinuxの機能を無効にしなければなりませんでした(/etc/sysconfig/selinuxを編集し、SELINUX=enforcingSELINUX=permissive(またはSELinuxを無効にするにはSELINUX=disabled)に編集してください。
また、私たちの場合、WSDLに接続するphpファイルをあなたが持つ問題を解決できない場合http://www.victorstanciu.ro/php-soapclient-port-bug-workaround/:。。sのリンク:私たちは、CentOSの6使用している場合にのみ、UbuntuのOCH MS Windowsを使用していないとき、この問題を抱えていたルート(chown root /path/to/phpfile/on/webserver/file.php

また

は、@ dar7ylを見てSELinuxの変更とphpファイルをルートとして実行

+0

私はまったく同じ問題を抱えていましたが、これも私の問題を解決しました。 –

1

PHPソープライブラリがWDSLバージョン2を処理できないという問題があると思います。サードパーティのライブラリを探す必要があるかもしれません。

+0

SOAPコンストラクタで「soap_version」=> SOAP_1_1を追加しましたが、それは役に立たなかった。 :(上記の私の編集を見てください。 – Rox

+0

PHPドキュメンテーションはPHPがバージョン2をサポートしていると言っています:http://www.php.net/manual/en/class.soapclient.php – Rox

+0

ああ、あなたはWSDL 2.0を書いていました。 SOAP 2.0ではなく、WSDL 1.0にバージョンを設定することは可能ですか? – Rox

2

私はこの同じ問題があります。基本的には、SOAPクライアントの現在のバージョンは処理しませんリモート wsdlの(リモートサーバーが "localhost"であっても)正しく...なぜ、動作するために多くの方法を試したか分かりません。 wsdlのコピーをダウンロードしてローカルに保存する場合は、次のように使用してください。

これは魅力的です。

あなたが本当にあなたのオプションは、ライブのwsdlが必要な場合:

  • はNuSoapの古いバージョンを見つけ、
  • を使用し、それを使用するWSDLをプルダウンして、それを保存するためのPHPカールライブラリーのようなものローカルファイルを作成し、この新しく保存されたファイルからSoap Clientオブジェクトを作成します。

Good Luck!

0

これをSELinux強制で動作させるには。

デフォルトでは、httpdスクリプトはネットワークに接続できないため、スクリプトを接続できるようにする必要がある場合は、httpd_can_network_connectブール値をオンに設定できます。

関連する問題