折雨的天空
最近折腾这个soap挺烦的,报错Could not connect to host
2015-1-14 我好笨


首先soap的调试是个问题,这里找到一篇文章,可以调试soap,可以参考



地址:http://zccst.iteye.com/blog/1225071



主要实现代码如下:










/**
* 设置参数array("trace"=>true)用于调试
* __getLastRequest 返回请求信息
* __getLastResponse 返回响应信息包括报错信息都会返回
*/
try{
$client = new SoapClient($server,array("trace"=>true));
$client->method($args);
}catch(SoapFault $e){
echo $client->__getLastRequest();
echo $client->__getLastResponse();
echo $e->getMessage();
}



然后描述下这次出现问题的情况,服务器用的Linux,我不是很熟悉linux,安装的集成环境包lnmp










先在本地测试,没有问题,然后wsdl是用程序生成的,感觉wsdl里面的地址有问题,我就手动改了IP







然后服务器上测试就只得到一个结果:



Could not connect to host







毫无办法







然后,到处找啊找,网上得出几个结果,服务器网络问题







我就去Ping啊,设置IP啊什么的,结果都通啊







再找,然后有位网友有个解决方案:







地址如下:http://my.oschina.net/phpmst/blog/86359







但是一看,貌似不是很靠谱啊,没尝试,继续找







于是在国外找到一个解决方案,是因为php.ini里的wsdl的缓存问题,一想,这可能性很大,首先环境是集成环境,很可能问题就在这里了







于是,打开PHP.INI一看,我靠,还真设置了缓存







然后把参数全改了







结果就对了







国外解决方案地址:



http://stackoverflow.com/questions/4318870/soapfault-exception-could-not-connect-to-host







涉及的Php.ini的几个参数







[soap]
; Enables or disables WSDL caching feature.
; http://php.net/soap.wsdl-cache-enabled

;这个要改为0
soap.wsdl_cache_enabled=0

; Sets the directory name where SOAP extension will put cache files.
; http://php.net/soap.wsdl-cache-dir
soap.wsdl_cache_dir="/tmp"

; (time to live) Sets the number of second while cached file will be used
; instead of original one.
; http://php.net/soap.wsdl-cache-ttl

;这个要改为0
soap.wsdl_cache_ttl=0

; Sets the size of the cache limit. (Max. number of WSDL files to cache)

;这个我也改了,你看着办
soap.wsdl_cache_limit = 0







发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容