2012-05-03 12 views
0

こんにちは皆私はすでに2週間この頭を割っています。自己石鹸サーバーへの2回目の石鹸呼び出しは、サーバーがセグメンテーションを生成するようになります

問題は、問題なく、問題なく動作しているようです。サーバーに2つの関数を呼び出そうとすると、segfaultエラーが表示されます。

'[通知]子プロセス13950終了シグナルセグメンテーションエラー(11)'というメッセージが表示されます。

しかし、私は2つの機能を別々に呼び出すと、それらは機能します。私は1週間これをgoogledし、異なるwsdl形式を試しましたが、唯一の問題はPHPバグやwsdlのエラーです(私のバリデータがエラーを見つけることができないためそう思わない)。

ブラウザが対応してくれこれを与える:

エラー324(ネット:: 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(); 

SOLUTION:私は空を返すサーバ機能を停止するように、ダイ機能を使用文字列。これをexit関数に変更して修正しました。

+0

Apache segfaults? p/straceの時間ですね。デバッガで起動し、正確に何が起こっているか見てみましょう。 – hakre

+0

これを試してみよう。このp/straceのことは初めてです。今すぐグーグル。 –

+0

私は別のマシンでも試してみたいと思っています。 – halfer

答えて

1

私は石鹸拡張を使用する複数のPHPプロセスで同様の問題がありました。これは、WSDLキャッシングの処理方法のバグのようです。私もini_set()の呼び出しでそれを無効にしようとしました。私は最終的に私の場合の回避策を見つけました。 cache_wsdlオプションをWSDL_CACHE_NONEに設定する必要がありました。

return new SoapClient("http://localhost/virtueleincasso.wsdl", array(
    "exceptions" => 1, 
    "cache_wsdl" => WSDL_CACHE_NONE 
)); 
関連する問題