soap failed to load external entity 异常

soap一个很奇怪的异常,时不时的出现,还没有规律。。。

经过半天的折腾,发现一个php的bug….

 

libxml_disable_entity_loader(true);

ini_set ( soap.wsdl_cache_enabled, 0 );

这两句执行的情况下,再去执行soap的client会报异常,原因是报文的,最外层的<?xml 没了,导致直接报错,抛出标题所说的异常。更奇葩的一个问题是,如果php有个线程执行了上述两句,另一个php线程在不设置的情况下,直接执行

ini_set ( soap.wsdl_cache_enabled, 0 );

和soap client的调用还会报上面的错。大概猜到是配置有缓存,导致的。。。

验证方法:报错的两句一次发起1000条请求。另一个线程纯soap就会异常

一般情况下没人用到…

libxml_disable_entity_loader(true);

这边调用到微信发红包。。里面有出现,好死不死,提交xml用拼的。接收xml用文艺的 xml转 json 加上了该句….

解决方法:

在调用soapclient时,前面执行句

libxml_disable_entity_loader(true);

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注