Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SOAP-ERROR:解析WSDL:can';t从加载(PHP5.6证书检查)_Php_Ssl_Soap_Wsdl - Fatal编程技术网

SOAP-ERROR:解析WSDL:can';t从加载(PHP5.6证书检查)

SOAP-ERROR:解析WSDL:can';t从加载(PHP5.6证书检查),php,ssl,soap,wsdl,Php,Ssl,Soap,Wsdl,我与以下错误斗争的时间比我愿意承认的要长。我找到的解决方案与实际问题无关 PHP致命错误:SOAP-error:分析WSDL:无法从“”加载:加载外部实体失败 我的prod环境是CentOS 6,它是用PHP5.3打包的,PHP5.3自2014年8月以来一直是EOL。据我所知,CentOS backports的安全修复程序,我仍然想用一个更新的版本进行一些测试,还有一些5.3中没有的功能,我可以利用它们 我用PHP5.6构建了一个新的开发环境,在我尝试一个SOAP调用并得到上面的消息之前,所有的

我与以下错误斗争的时间比我愿意承认的要长。我找到的解决方案与实际问题无关

PHP致命错误:SOAP-error:分析WSDL:无法从“”加载:加载外部实体失败

我的prod环境是CentOS 6,它是用PHP5.3打包的,PHP5.3自2014年8月以来一直是EOL。据我所知,CentOS backports的安全修复程序,我仍然想用一个更新的版本进行一些测试,还有一些5.3中没有的功能,我可以利用它们

我用PHP5.6构建了一个新的开发环境,在我尝试一个SOAP调用并得到上面的消息之前,所有的开发环境似乎都在工作。经过大量搜索,我终于发现在PHP5.6中,默认情况下启用了SSL证书检查。在我的开发环境中,它是完全包含的,应用程序需要SSL。我没有有效的证书。我没有在我的PROD环境中进行测试,该环境具有有效的证书

为了解决这个问题,我补充道:

'stream_context'=>stream_context_create
(
    array
    (
        'ssl'=>array
        (
            'verify_peer'=>false, 
            'verify_peer_name'=>false
        )
    )
)
在这里,它被放在代码中。这有点乱,只是为了测试把它放在一起

<?php

$device_ip = "x.x.x.x";
$user = "username";
$pw = "password";

$location = "https://" . $device_ip . "/iControl/iControlPortal.cgi?";
$wsdl_class = "https://" . $device_ip . "/iControl/iControlPortal.cgi?WSDL=LocalLB.Class";
$soap_class = new SoapClient($wsdl_class, array('location'=>$location, 'login'=>$user, 'password'=>$pw, 'stream_context'=>stream_context_create(array('ssl'=>array('verify_peer'=>false, 'verify_peer_name'=>false)))));

$response = $soap_class->get_string_class(array("SomeName"));
var_dump($response);

?>


虽然我能够找到一个没有有效证书的解决办法。有没有办法导入自签名证书,这样我就不会在我的开发环境中使用该解决方案?

我注意到您正在使用iControl。值得注意的是,iControl现在支持比WSDL/XML简单得多的。您可能希望尝试一下,我已经用RESTAPI做了一些测试,希望在不久的将来能够迁移我的代码。我同意,不过工作起来要简单得多。