2017-07-26 3 views
0

Alle folgenden läuft in Amazon EC2PHP Soapclient :: Soapclient Fehler mit: SSL: Hände schütteln zeitlich und Fehler beim Krypto ermöglichen

Ich habe Exacttarget API wurde jetzt mit E-Mails für ein paar Monate senden und es hörte einfach auf, in meiner QA-Umgebung zu arbeiten. Der gesamte folgende Code funktioniert in meiner Produktionsumgebung ordnungsgemäß. Ihr SDK bietet eine Klasse namens ET_Client, die den eingebauten PHP SoapClient erweitert. Die störende Codezeile ist ein Aufruf an

parent::__construct($wsdl, array('trace'=>1, 'exceptions'=>0,'connection_timeout'=>120) 

Das ist nur ein Aufruf des SoapClient-Konstruktors.

Die Fehler, die ich in meinen Log-Dateien bekommen sind wie folgt:

[26-Jul-2017 13:42:52 America/New_York] PHP Warning: SoapClient::SoapClient(): SSL: Handshake timed out in /var/www/vhosts/qa.devepc.com/repo/httpdocs/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php on line 74 [26-Jul-2017 13:42:52 America/New_York] PHP Warning: SoapClient::SoapClient(): Failed to enable crypto in /var/www/vhosts/qa.devepc.com/repo/httpdocs/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php on line 74 [26-Jul-2017 13:42:52 America/New_York] PHP Warning: SoapClient::SoapClient(https://webservice.exacttarget.com/ETFrameworkFault.xsd): failed to open stream: operation failed in /var/www/vhosts/qa.devepc.com/repo/httpdocs/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php on line 74 [26-Jul-2017 13:42:52 America/New_York] PHP Warning: SoapClient::SoapClient(): I/O warning : failed to load external entity " https://webservice.exacttarget.com/ETFrameworkFault.xsd " in /var/www/vhosts/qa.devepc.com/repo/httpdocs/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php on line 74 [26-Jul-2017 13:42:52 America/New_York] PHP Fatal error: SOAP-ERROR: Parsing Schema: can't import schema from ' https://webservice.exacttarget.com/ETFrameworkFault.xsd ' in /var/www/vhosts/qa.devepc.com/repo/httpdocs/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php on line 74

Ich entdecken auch, dass ich die ähnlichen Fehler beim Versuch file_get_contents() mit einer SSL-Ressource zu verwenden.

Dieser Befehl:

php -r "var_dump(file_get_contents('https://google.com/'));" 

gibt mir folgendes.

[26-Jul-2017 18:06:13 UTC] PHP Warning: file_get_contents(): SSL: Handshake timed out in Command line code on line 1 [26-Jul-2017 18:06:13 UTC] PHP Warning: file_get_contents(): Failed to enable crypto in Command line code on line 1 [26-Jul-2017 18:06:13 UTC] PHP Warning: file_get_contents(https://google.com/): failed to open stream: operation failed in Command line code on line 1

Es ist möglich, dass das Problem auf subtile Version Unterschiede zwischen den beiden Servern zurückzuführen ist, wurde jedoch bis 7/13/17 zu arbeiten, und es gab keine Aktualisierungen an den Server seit Februar. Außerdem habe ich gestern den gesamten Server aktualisiert, und PHP ging von 5.6.25 auf 5.6.30. Mein Produktionsserver ist 5.6.22.

Ich habe versucht, das Problem zu beheben, indem Sie den SSL-Stream mithilfe von Optionen, die an stream_context_create übergeben werden, manipulieren, aber die Fehler bestehen weiterhin.

Wenn ich nach "Fehler beim Aktivieren von Krypto" und "SSL: Handshake-Zeitüberschreitung" gesucht habe, finde ich viele Ergebnisse für die Verwendung von curl mit einem Stream-Kontext, habe aber nichts gefunden, was zu SoapClient gehört. Darüber hinaus möchte ich den Code im ExactTarget Fuel SDK nicht bearbeiten, da ich Herstellerbibliotheken unbefleckt lassen möchte.

Hat jemand diese oder ähnliche Probleme mit Seife gehabt, und wenn ja, gibt es eine Lösung?

Vielen Dank im Voraus.

Antwort

0

php.ini

default_socket_timeout=-1 

kann diesen Fehler verursachen. Versuchen Sie es auf etwas anderes als -1

+0

Das war es. Der Wert dieser ini-Einstellung war der einzige Konfigurationsunterschied zwischen dem QA- und dem Produktionsserver. Ich habe gerade einen Tag damit verbracht, es zu ignorieren, weil es offensichtlich nicht die Ursache war! – dreadpiraterobert