2010-01-04 5 views
6

Der Versuch, Soap-Verbindung zu einem https zu machen: // WSDL-Quelle über PHP/Win32, aber halten Sie den Fehler bekommen:PHP SOAP kann nicht auf eine SSL WSDL Quelle verbinden

Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "https://...

Wenn ich versuche, die WSDL zu speichern lokal und Zugriff darauf dann, die SoapFault->faultstring Eigenschaft hat die Meldung "SSL-Unterstützung ist nicht in diesem Build verfügbar".

Nach einigem Googeln scheint PHP SOAP keine Verbindung zu einer HTTPS-Quelle herzustellen. HTTP ist jedoch OK.

Gibt es einen Workaround dafür? Oder gibt es eine alternative SOAP Version/Modul die ich installieren kann?

+0

gelöst! Ich musste das PHP-Modul "php_openssl" installieren, damit es funktionierte. Habe gerade die aktiviert.dll in php.ini. Vielen Dank! –

Antwort

1

hatte ich das gleiche Problem. openSSL, cURL wurden aktiviert, ein SoapClient mit der Option des Ortes, um zertifizierte gespeichert, etc, etc. initiiert .. alles versucht.

Es stellt sich heraus, dass es im CLI-Modus funktioniert. Also php_sapi = CLI. Da wir unsere webservices-Aufrufe fast immer als eine Cronjob-geplante Aufgabe in Windows ausführen, ist das nicht wirklich eine schlechte Sache. Ich war wirklich froh, dass es funktioniert!

Update: Okay, stellt sich heraus, wenn PHP als Apache-Modul ausgeführt wird, verwendet es die von opensll erforderlichen Bibliotheken Libeay32.dll und ssleay32.dll von der Apache-Installation. Bei der Verwendung von PHP in CLI werden die Bibliotheken aus dem PHP-Verzeichnis/install verwendet. Das Überschreiben der 2 Apache-DLLs mit den DLLs aus dem PHP-Verzeichnis hat den Zweck erfüllt. Es läuft jetzt auch unter Apache. Ihre PHP-Version sollte also mit den Arbeits-DLLs für die bestimmte Version übereinstimmen. Wenn es immer noch nicht in der Weboberfläche funktioniert. Bitte überprüfen Sie, dass Apache diese DLLs nicht aus einem Windows-Systemverzeichnis lädt, das zuvor in Ihrem vom System definierten Pfad angegeben wurde und von Apache übernommen wird.

15

HTTPS-Unterstützung für SOAP in PHP5

Wenn Sie Fehlermeldungen über https-Wrapper fehlen sehen sind, wenn SOAP zu verwenden versuchen (https ‚“ Kann die Wrapper zu finden‘- Sie können es zu ermöglichen, hat vergessen, wenn Sie haben PHP konfiguriert? "oder" [HTTP] SSL-Unterstützung ist in diesem Build nicht verfügbar "), Sie haben die SSL-Bibliotheken nicht installiert, um sichere Transaktionen zu unterstützen.

  1. Kommentar- extension = php_soap.dll in der php.ini

  2. Kommentar- extension = php_openssl.dll in der php.ini

  3. Copy ssleay32.dll und Libeay32.dll zu Ihrem Windows-Verzeichnis system32

  4. Neustart Apache, et voila!

fand ich ursprünglich diese Antwort an: http://webponce.com/rants/2008/04/https-support-for-soap-in-php5-under-windows/

+0

Ich habe meinen Kopf gegen die Wand geschlagen. Ich habe das endlich gefunden, und es hat funktioniert, danke. – KacieHouser

+0

aktivieren php_openssl funktionierte in meinem Fall. vielen Dank! – sladda

+1

Ja, die Schritte 2 und 4 reichen, zumindest in der aktuellen Version von xampp! – Brilliand