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