服务器是CENTOS,PHP 5.4和Apache 2.2。
我有一个像这样的SoapClient对象:
$client = new \SoapClient(__DIR__ . "/wsdlfilehere.wsdl", array("soap_version"=>SOAP_1_2, "trace"=>true));
一段时间后(24小时内),此代码会抛出错误:
SOAP-ERROR:解析WSDL:无法从' /wsdlfilehere.wsdl'加载; :无法加载外部实体" /wsdlfilehere.wsdl"。
然后 之后我重新启动apache并再次运行。
编辑:即使将cache_wsdl设置为WSDL_CACHE_NONE也无法解决问题。
答案 0 :(得分:0)
在挖掘之后我终于找到了解决方法/解决方案。
在link on Ubuntu's launchpad之后,似乎其他人也遇到了这个问题。我跟着zabuch's instruction at comment #6,现在似乎工作了。我同意他的观点,问题可能出在mod_php / php本身,而不仅仅是Ubuntu,因为我在CentOS上并遇到过这个问题。
来自zabuch的评论:
问题的解决方法是添加:
libxml_disable_entity_loader(假);
在创建新的SoapClient之前。