php的soap无故出错的真凶:wsdl缓存
soap不更新的真凶:
当我修改了服务端的调用方法后,更新了wsdl,客户端的参数老是丢失(不是全丢失,而是部分),让人很郁闷。
第二天我索性增加了一个服务端的新方法,更新了wsdl,但是客户端请求却报错说没有定义该方法。
最后发现是因为php对soap的wsdl进行了缓存。
解决方法是,修改php.ini中的
soap.wsdl_cache_enabled=1(改为0),
soap.wsdl_cache_ttl=86400(改为0)
两项。
特别注意的是,客户端和服务端的机器都要改。