一部の Web サイトを Debian サーバーから別の Redhat サーバーに移行する必要があります。データベースへのすべてのアクセスは Web サービスを経由するため、SOAP を使用してそれらと通信します (そして、Web サービスは SQL Server ストアド プロシージャを呼び出します)。
問題は、(基本的に Apache2+PHP5 であっても) サーバー間にいくつかの違いがあるため、新しいサーバーで一部の呼び出しが失敗することです。
それらの1つはそれを非常に明確にします。これはデータベースに INSERT する関数なので、いくつかのパラメーターを指定して SoapClient を介して Web サービスを呼び出します。これらのパラメーターが空である場合もあります。問題のあるものは実際には通常空です。
Web サービスを呼び出し、@parameter が空の場合、@parameter が指定されていないことを示す SQL ストアド プロシージャからエラーが返されます。実際、その値を 0 または 1 に設定すると (整数でのみ失敗します)、機能します。ここで本当に奇妙なのは、Debian セットアップでは完璧に機能するのに、新しい RedHat セットアップでは機能しないことです。
これに影響を与える可能性のある SoapClient 構成パラメーターはありますか? 考えられるすべてのオプションを試しましたが、まだ機能しません (Web サービスと SQL サーバーはまったく同じです! Linux サーバーのみが変更されます!)
どうもありがとうございました。
PS: わかりやすくするために、送信される SOAP-XML リクエストを出力します。古いバージョンには<ns1:problematic_parameter/>
このパラメーターが空の場合でも含まれますが、新しいバージョンにはこのタグが含まれていません。どちらの場合も、同じ方法で呼び出されます$client->Function(array('parameter' => $this->parameter [...] );