我们必须将一些网站从Debian服务器迁移到另一个Redhat服务器。对数据库的每次访问都通过webservices进行,因此我们使用SOAP与它们进行通信(以及webservices调用SQL Server存储过程)
问题是,服务器之间肯定存在一些差异(即使它们基本上是Apache2 + PHP5),因此有些调用会在新服务器中失败。
其中一个非常清楚。它是INSERT在数据库中的一个函数,因此我们通过SoapClient使用一些参数调用webservice。有时这些参数可能为空。实际上有问题的通常是空的。
现在,当我们调用webservice并且@parameter为空时,它会从SQL存储过程返回一个错误,其中表示未指定@parameter。实际上,如果我们将其值设置为0或1(它只能用整数表示),它就可以工作。这里真的很奇怪,它在我们的Debian设置中运行得很完美,但它不适用于我们新的RedHat。
是否有任何可能影响此问题的SoapClient配置参数?我已经尝试了我能想到的每一个选项但它仍然无法工作(web服务和SQL服务器完全相同!只有Linux服务器发生了变化!)
非常感谢。
PS:为了使事情更清楚,打印发送的SOAP-XML请求,旧版本包括<ns1:problematic_parameter/>
即使此参数为空,新的参数也不包含此标记。在这两种情况下,它的调用方式都是$client->Function(array('parameter' => $this->parameter [...] );