Kann nicht geladen webservice mit SOAP in PHP, ich bekomme SOAP-FEHLER
Habe ich einen web-Dienst, den ich für den Zugriff über SOAP.
Aber ich bekomme einen SOAP-FEHLER:
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"
Wenn ich manuell die URL http://127.0.0.1:9999/info?wsdl im browser, dann sehe ich die generierte xml-Datei.
Warum kann ich laden Sie es mit SEIFE?
Lade ich die URL mit SOAP in PHP so:
$soap = new SoapClient("http://127.0.0.1:9999/info?wsdl",
array("trace" => TRUE));
Was habe ich verpasst?
BEARBEITEN
Einstellung der SOAP-version 1.1 macht es NICHT funktioniert:
$soap = new SoapClient("http://127.0.0.1:9999/info?wsdl", array("trace" => TRUE, "soap_version" => SOAP_1_1));
EDIT 2:
Ich habe es sowohl mit Windows und Ubuntu, aber nicht auf CentOS 6. Ist es etwas mit CentOS 6, das macht PHP:s SoapClient nicht funktioniert? Die PHP-version läuft bei mir auf dem CentOS 6 Maschine 5.3.3 mit (natürlich) Soap-Unterstützung in PHP aktiviert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich das gleiche problem. Grundsätzlich ist die aktuelle version des SOAP-Clients nicht verarbeitet REMOTE wsdl-s (auch wenn der remote-server ist "localhost") richtig... weiß auch nicht warum, habe versucht, viele Möglichkeiten, um zu arbeiten, einfach nicht. Wenn Sie den download einer Kopie der wsdl und speichern Sie es lokal ein Beispiel:
Es funktioniert wie ein Charme.
Wenn Sie wirklich brauchen, eine live-wsdl-Ihre Möglichkeiten sind:
Glück!
Danke für Eure Antworten und Ideen! Aber wir haben das problem gefunden. Es war Zeug in SELinux, die musste deaktiviert werden (Sie können, Bearbeiten
/etc/sysconfig/selinux
und Bearbeiten Sie die ZeileSELINUX=enforcing
zuSELINUX=permissive
(oderSELINUX=disabled
um SELinux zu deaktivieren).Auch in unserem Fall mussten wir die Ausführung des php-Dateien, die verbindet, um die WSDL als root (
chown root /path/to/phpfile/on/webserver/file.php
).Wir hatten dieses problem nur, wenn mit CentOS 6, nicht bei der Verwendung von Ubuntu und MS Windows.
Außerdem haben Sie einen Blick auf @dar7yl:N link: http://www.victorstanciu.ro/php-soapclient-port-bug-workaround/ wenn Sie nicht lösen können das problem mit den änderungen in SELinux und ausführen der php-Datei als root.
Ich denke, das problem ist, dass die PHP-Soap-Bibliothek können nicht mit WSDL in der version 2. Haben Sie vielleicht zu suchen für 3rd-party-Bibliotheken.
Zu machen, arbeiten mit SELinux enforcing.
Seit httpd-Skripte standardmäßig nicht erlaubt, Verbindung zu dem Netzwerk, wenn Sie Skripts, um in der Lage sein, um verbinden, Sie können die httpd_can_network_connect boolean auf.