在PHP5中禁用本机Soap类并使用nuSoap?

时间:2010-03-10 19:59:23

标签: php nusoap soap-client

我花了最后一周开发代码,使用nuSoap库连接到Web服务。我刚刚将代码部署到生产中,但立即开始收到我之前从未见过的错误。我将问题追溯到试图实例化新的soapclient对象的一行代码。事实证明,两个库都有一个名为'soapclient'的类,而在生产中创建的类来自本机Soap库,而不是我所包含的nuSoap库。如何禁用原生Soap功能并严格遵守nuSoap?

3 个答案:

答案 0 :(得分:2)

随着PHP5的发布,php_soap扩展中包含一个soapclient类。 NuSOAP已将其类重命名为nusoap_client。如果您的NuSOAP副本是最新的,您应该可以使用它。这不会禁用php_soap扩展,但应该允许您使用NuSOAP类而不会产生进一步的冲突。

答案 1 :(得分:2)

啊,没关系。 NuSoap 0.7.3(我正在使用)将类名改为'nusoap_client',以避免这种冲突。它们还包括一个向后兼容性检查,如果未加载本机Soap扩展名,则将该类别与'soapclient'混淆,这就是为什么我没有在我的开发机器上捕获它。

参考:http://code.google.com/p/nusoap-for-php5/issues/detail?id=2

答案 2 :(得分:0)

我不怪你,PHP的内置肥皂库是完整的,完全尴尬,特别是与python web服务相比时。

一种选择是在编译时删除扩展名:

  

此扩展仅适用于   PHP配置了--enable-soap。

另一种选择是在nuSoap中重命名soap-client。 Notepad ++的搜索和替换效果很好,但你真的不应该这样做。