php SoapClient无法连接,但命令行curl调用可以工作

php SoapClient无法连接,但命令行curl调用可以工作,php,soap,wsdl,ssl-certificate,Php,Soap,Wsdl,Ssl Certificate,我有一个LAMP服务器(#1),它通过soap与另一个服务器(#2)通过WSDL进行通信。如果我在服务器1的命令行上对服务器2的URL发出一个curl调用,它可以正常工作并获得适当的WSDL响应,但是对同一URL的php soapclient会收到一个“加载外部实体失败”错误。以前,当我们在服务器2上有一个自签名证书时,这是有效的,但在我们升级到CA证书的同时停止工作 有趣的是,该服务器与位于不同位置的另一台服务器(不同的操作系统,但相同的php代码/数据库)进行负载平衡,而第二台服务器根本没有

我有一个LAMP服务器(#1),它通过soap与另一个服务器(#2)通过WSDL进行通信。如果我在服务器1的命令行上对服务器2的URL发出一个curl调用,它可以正常工作并获得适当的WSDL响应,但是对同一URL的php soapclient会收到一个“加载外部实体失败”错误。以前,当我们在服务器2上有一个自签名证书时,这是有效的,但在我们升级到CA证书的同时停止工作

有趣的是,该服务器与位于不同位置的另一台服务器(不同的操作系统,但相同的php代码/数据库)进行负载平衡,而第二台服务器根本没有任何问题

下面是我用于soap客户端的代码:

function getSoapClient(){
ini_set("soap.wsdl_cache_enabled", 0);
    // standard soap client for application service
    $post_url = lum_getString("[CAMPAIGN_POST_URL]").
        "?enterprise=".lum_getString("[CAMPAIGN_ENTERPRISE]").
        "&company=".lum_getString("[CAMPAIGN_COMPANY]");
    $options = array(
        'trace' => true,
        'cache_wsdl' => WSDL_CACHE_NONE,
        'exceptions' => 1,
        'verifypeer' => false,
        'verifyhost' => false,
        'allow_self_signed' => true,
        'login' => lum_getString("[CAMPAIGN_POST_ID]"),
        'password' => lum_getString("[CAMPAIGN_POST_LC]"),
    );
    $context = stream_context_create(
        array(
            'user_agent' => 'PHPSoapClient',
            'ssl' => array(
                'verify_peer' => false,  
                'allow_self_signed' => true, 
            ),
            'https' => array(
                'curl_verify_ssl_peer'  => false,
                'curl_verify_ssl_host'  => false,
            )
        )
    );
    $options['stream_context'] = $context;

    $client = new SoapClient($post_url."&wsdl",$options);

    return $client;
}
curl和soapclient使用相同的端口,因此不应该是防火墙问题


非常感谢您在确定问题或帮助我找出问题所在方面提供的任何帮助。

结果表明,这似乎是防火墙问题。我打开了从服务器1到服务器2的所有访问权限,一切都开始工作了。不太确定问题出在哪里。我将选项减少到只有登录名和密码,它仍然有效。防火墙往往是答案

任何关于防火墙、正确的端口以及为什么它不工作的想法都是非常感谢的


为什么cURL工作而SOAP不工作?

我确保工作负载平衡机器和坏掉的客户端服务器1之间的openssl版本匹配,将坏掉的服务器1降级到1.01版本,没有任何影响。