0

大家好,我已经为此苦恼了两个星期。

问题是我做了一个肥皂服务,似乎工作正常。当我要求它显示它的函数时,它会全部返回它们等等。但是当我尝试向服务器调用两个函数时,我得到一个段错误:

'[notice] child pid 13950 exit signal Segmentation fault (11)'

但是当我分别调用这两个函数时,它们会起作用。我为此搜索了一周并尝试了不同的 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 函数来停止服务器函数返回一个空字符串。我通过将其更改为退出函数来修复它。

4

1 回答 1

1

我在使用soap扩展的多个PHP进程中遇到了类似的问题。这似乎是处理 WSDL 缓存的方式中的一个错误。我还尝试通过ini_set()调用禁用它,但没有成功。我最终在我的案例中找到了解决方法。我需要将cache_wsdl选项设置为WSDL_CACHE_NONE.

return new SoapClient("http://localhost/virtueleincasso.wsdl", array(
    "exceptions" => 1,
    "cache_wsdl" => WSDL_CACHE_NONE
));
于 2015-03-09T21:01:33.390 回答