PHP SoapClient无法正常工作 - 没有错误

时间:2011-05-27 15:14:33

标签: php soap-client bronto

我有一些代码通过SOAP连接到新闻通讯服务。它在我们的开发服务器上没有问题,但在我们的实时服务器上它根本不起作用。它没有返回任何错误;只是一个空白的白页。我已经在代码中添加了一些error_logs并找到它停止工作的确切位置 - 在创建新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"); 

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

这不仅仅是现场服务器上php的配置设置,而且这是我在php上使用的常见问题,

第一件事就是检查允许的内存,因为php可以与dev相媲美(SOAP对于内存来说很大而且不好)

实时服务器上的php是否与开发服务器版本相同,

实时服务器是否有权访问SOAP服务器(如果在IP级别使用auth)

作为我用过的SOAP软件包之一对我做了这个,我发现有一个版本不匹配,最后但并非最不重要的是你能告诉我们什么是SOAP库,如果有的话,那么php默认你的使用,所以我们可以帮助你代码看起来不错:)

考虑它你有安装soap我不认为php本身支持它我认为它是一个梨或pecl包,如果你在开发中使用XAMPP或easyPHP这些都已经准备好包含在php中。