皆さん、こんにちは、私はこれについてすでに 2 週間頭を悩ませています。
問題は、問題なく動作するように見える石鹸サービスを作成したことです。関数を表示するように要求すると、それらすべてが返されます。しかし、サーバーに対して 2 つの関数を呼び出そうとすると、segfault エラーが発生します。
「[お知らせ] 子 pid 13950 終了信号のセグメンテーション違反 (11)」
しかし、2 つの関数を別々に呼び出すと、それらは機能します。私はこれを1週間グーグルで検索し、さまざまなwsdl形式を試しましたが、発生した唯一のことは、phpバグの可能性またはwsdlのエラーでした(バリデーターがエラーを見つけられないため、可能性は低いと思われます)。
ブラウザはこれに応答して私にこれを返します:
エラー 324 (net::ERR_EMPTY_RESPONSE)
私は現在phpバージョン5.3.6を実行しており、5.2.17も試してphpバグの可能性を排除しようとしました。しかし、どちらも同じエラーを出しました。
「すべて問題ないはず」なので、ここのオフィスでは誰もこれを修正する方法を知りません。
誰かが私を正しい方向に導くことができますか?
クライアント: (このコードは apache クラッシュを引き起こします)
ini_set('soap.wsdl_cache_enabled', 0);
ini_set('soap.wsdl_cache_ttl', 0);
try{
$soap = new SoapClient("http://localhost/virtueleincasso.wsdl", array("exceptions" => 1));
$password = $soap->virtuele_incasso_login('user', 'pass');
$status = $soap->get_status($password , 1060);
}catch (SoapFault $exception){
echo $exception->faultstring;
}
サーバー:
ini_set('soap.wsdl_cache_enabled', 0);
ini_set('soap.wsdl_cache_ttl', 0);
$server = new SoapServer(DIR_ROOT."/virtueleincasso.wsdl");
$server->setClass('PP_Api');
$server->handle();
die();
解決策: die 関数を使用して、空の文字列を返すサーバー関数を停止しました。これを終了関数に変更して修正しました。