服务器是带有PHP 5.4和Apache 2.2的CENTOS。

我有一个这样的SoapClient对象:

$client = new \SoapClient(__DIR__ . "/wsdlfilehere.wsdl", array("soap_version"=>SOAP_1_2, "trace"=>true));


一段时间(24小时内)后,此代码将引发错误:


  SOAP错误:解析WSDL:无法从“ /wsdlfilehere.wsdl”加载:无法加载外部实体“ /wsdlfilehere.wsdl”。


然后,在我重新启动apache之后,它又可以工作了。

编辑:即使将cache_wsdl设置为WSDL_CACHE_NONE也不能解决问题。

最佳答案

深入研究之后,我终于找到了解决方法/解决方案。

在此link on Ubuntu's launchpad之后,似乎其他人也遇到了这个问题。我遵循了zabuch's instruction at comment #6,它现在似乎可以工作了。我同意他的观点,问题可能出在mod_php / php本身,而不仅仅是Ubuntu,因为我在CentOS上并且遇到了这个问题。

从zabuch的评论中:


  该问题的解决方法是添加以下内容:
  
  libxml_disable_entity_loader(false);
  
  在创建新的SoapClient之前。

关于php - SoapClient无法加载WSDL,需要重新启动apache才能再次工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30994025/

10-15 05:12