PHP SoapClient :: SoapClient失败:SSL:握手定时和无法启用加密

时间:2017-07-26 18:27:07

标签: php ssl soap soap-client

以下所有内容均在Amazon EC2

中运行

我一直在使用ExactTarget的API发送电子邮件几个月,它刚刚停止在我的QA环境中工作。以下所有代码在我的生产环境中都能正常运行。他们的SDK提供了一个名为ET_Client的类,它扩展了内置的PHP SoapClient。有问题的代码行是对

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

这只是对SoapClient构造函数的调用。

我在日志文件中收到的错误如下:

  

[26-Jul-2017 13:42:52 America / New_York] PHP警告:SoapClient :: SoapClient():SSL:握手在/var/www/vhosts/qa.devepc.com/repo/httpdocs中超时第74行/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php   [26-Jul-2017 13:42:52 America / New_York] PHP警告:SoapClient :: SoapClient():无法在/var/www/vhosts/qa.devepc.com/repo/httpdocs/lib/vendor中启用加密第74行的/exacttarget/fuel-sdk-php/ET_Client.php   [26-Jul-2017 13:42:52 America / New_York] PHP警告:SoapClient :: SoapClient(https://webservice.exacttarget.com/ETFrameworkFault.xsd):无法打开流:/var/www/vhosts/qa.devepc.com中的操作失败第74行/repo/httpdocs/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php   [26-Jul-2017 13:42:52 America / New_York] PHP警告:SoapClient :: SoapClient():I / O警告:无法加载外部实体" https://webservice.exacttarget.com/ETFrameworkFault.xsd"位于第74行的/var/www/vhosts/qa.devepc.com/repo/httpdocs/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php   [26-Jul-2017 13:42:52 America / New_York] PHP致命错误:SOAP-ERROR:解析架构:无法从' https://webservice.exacttarget.com/ETFrameworkFault.xsd'导入架构在第74行的/var/www/vhosts/qa.devepc.com/repo/httpdocs/lib/vendor/exacttarget/fuel-sdk-php/ET_Client.php

我还发现在尝试将file_get_contents()与SSL资源一起使用时,我遇到了类似的错误。

此命令:

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

给了我以下内容。

  

[26-Jul-2017 18:06:13 UTC] PHP警告:file_get_contents():SSL:握手在第1行的命令行代码中超时   [26-Jul-2017 18:06:13 UTC] PHP警告:file_get_contents():无法在第1行的命令行代码中启用加密   [26-Jul-2017 18:06:13 UTC] PHP警告:file_get_contents(https://google.com/):无法打开流:第1行的命令行代码中的操作失败

问题可能是由于两个服务器之间的细微版本差异造成的,但是它一直工作到7/13/17,并且自2月以来没有对服务器进行更新。此外,我昨天更新了整个服务器,PHP从5.6.25升至5.6.30。我的生产服务器是5.6.22。

我尝试使用传递给stream_context_create的选项操纵SSL流来解决问题,但错误仍然存​​在。

当我搜索&#34时;无法启用加密"和" SSL:握手超时"我发现在流上下文中使用curl有很多结果,但是找不到任何与SoapClient有关的内容。另外,我不想编辑ExactTarget Fuel SDK中的代码,因为我想保留供应商库的无污染。

有没有人遇到过这个或类似问题的肥皂,如果有,有解决方案吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

的php.ini

default_socket_timeout=-1  

会导致此错误。尝试将其设置为-1以后的其他内容