服务器是带有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/