soap客户端-PHP SoapClient不工作-没有错误


soap client - PHP SoapClient not working - no error

我有一些代码通过SOAP连接到时事通讯服务。它在我们的开发服务器上工作没有问题,但在我们的实时服务器上根本不工作。它不会返回任何错误;只是一张空白的白纸。我在代码中放入了一些error_log,并找到了它停止工作的确切位置——在创建新SoapClient的那一行。是否需要设置某种服务器配置?我们的代码在dev和prod之间是相同的,所以我唯一能想到的就是服务器问题。(注意,下面的第一段代码是由时事通讯服务提供的,而不是我写的。)

# bronto API session/connection setup
ini_set("soap.wsdl_cache_enabled", "0");
date_default_timezone_set('America/Chicago');
$wsdl = "https://api.bronto.com/v4?wsdl";
$url = "https://api.bronto.com/v4";
/*error log statements up to this point return what is expected; 
  an error log after the following line (starting with $client = new SoapClient) 
  does not get triggered at all. */
$client = new SoapClient($wsdl, array('trace' => 1, 'encoding' => 'UTF-8')); 
$client->__setLocation($url);
$token = "XXX";
$sessionId = $client->login(array("apiToken" => $token))->return;
$client->__setSoapHeaders(array(new SoapHeader("http://api.bronto.com/v4",
        'sessionHeader',
         array('sessionId' => $sessionId))));

我也尝试过这样的方法来明确地查看任何错误,但没有成功——错误日志中仍然没有任何错误。

try {  
  $client = @new SoapClient($wsdl, array('trace' => 1, 'encoding' => 'UTF-8')); 
} 
  catch (SoapFault $E) {  
    error_log($E->faultstring) ;
}  
error_log("ok"); 

我会检查开发服务器上安装的PHP包,并与Prod服务器进行比较。fr2.php.net/manual/en/soap.setup.php

这很可能是php在实时服务器上的配置设置,但以下是我在php上使用SOAP、时遇到的常见问题

第一件事是检查php在live中与dev相比允许的内存(SOAP很大,对内存不利)

实时服务器上的php与开发服务器的版本相同吗

是否授权实时服务器访问SOAP服务器(如果在IP级别上使用身份验证)

当我使用的一个SOAP包对我这样做时,我发现存在版本不匹配,最后但同样重要的是,你能告诉我们什么SOAP库吗?如果有其他的,那么php默认你使用,这样我们就可以帮助你,因为你的代码看起来很好:)

想想看,如果你安装了soap,我不认为php本身支持它,我认为它是一个pear或pecl包,如果你在dev上使用XAMPP或easyPHP,那么这两者都已包含在php中。