上周我一直在开发代码以使用 nuSoap 库连接到 Web 服务。我刚刚将代码部署到生产环境,但立即开始出现我以前从未见过的错误。我将问题追溯到试图实例化一个新的soapclient对象的一行代码。事实证明,这两个库都有一个名为“soapclient”的类,而在生产中创建的类来自本机 Soap 库,而不是我所包含的 nuSoap 库。如何禁用本机 Soap 功能并严格使用 nuSoap?
问问题
5577 次
3 回答
2
随着 PHP5 的发布,soapclient
php_soap 扩展中包含了一个类。NuSOAP 已将其类重命名为nusoap_client
. 如果您的 NuSOAP 副本是最新的,您应该可以使用它。这不会禁用 php_soap 扩展,但应该允许您使用 NuSOAP 类而不会发生进一步的冲突。
于 2010-03-10T20:06:28.750 回答
2
啊没关系。NuSoap 0.7.3(我正在使用)将类名更改为“nusoap_client”,专门以避免这种冲突。它们还包括一个向后兼容性检查,如果未加载本机 Soap 扩展,则将该类别名为“soapclient”,这就是为什么我没有在我的开发机器上捕捉到它的原因。
参考:http ://code.google.com/p/nusoap-for-php5/issues/detail?id=2
于 2010-03-10T20:14:00.143 回答
0
我不怪你,PHP 的内置soap 库是完整且完全令人尴尬的,尤其是与python Web 服务相比时。
一种选择是在编译时删除扩展:
此扩展仅在 PHP 配置了 --enable-soap 时可用。
另一种选择是在nuSoap 中重命名soap-client。Notepad++ 的搜索和替换效果很好,但你真的不应该这样做。
于 2010-03-10T20:06:19.857 回答