2011-05-27 85 views
2

我有一些代码通过SOAP连接到时事通讯服务。它在我们的开发服务器上没有问题,但在我们的活动服务器上它根本不起作用。它不会返回任何错误;只是一个空白的白页。我已经将一些error_logs放入代码中,并发现它在哪里停止工作 - 在创建新SoapClient的行上。是否需要设置某种服务器配置?我们的代码在dev和prod之间是相同的,所以我唯一可以确定的是服务器问题。 (请注意,下面由通讯服务提供的代码的第一块,不是我写的。)PHP SoapClient不工作 - 没有错误

# 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"); 
+0

我会在dev服务器上检查已安装的PHP软件包,并与Prod服务器进行比较。 http://fr2.php.net/manual/en/soap.setup.php – 2011-05-27 15:30:44

+1

打开error_reporting。一个“白色屏幕”通常意味着PHP呕吐,并已设置为隐藏所有错误,所以你什么也得不到。另外,如果PHP已经配置完成,请检查服务器(和/或php的)错误日志,看看里面是否有任何东西。它可能不会在浏览器中吐出错误消息,但它们可能会在某处登录。 – 2011-05-27 15:31:11

+0

@菲尔,谢谢。我只是这样做,并且感到惊讶!我们的现场(托管)服务器根本没有安装SOAP!如果你想把这个评论转换成答案,我会接受它,所以你得到了信用。 – EmmyS 2011-05-27 15:38:23

回答

4

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

+0

这就是问题; SOAP未安装在我们托管的实时服务器上。 – EmmyS 2011-05-27 16:16:08

0

这将不仅仅是一个配置设置的PHP在现场服务器上,但这里是我用PHP上的SOAP的常见问题,

的第一件事是检查允许内存活可比PHP和DEV(SOAP又大又坏的内存)

是直播服务器相同的版本作为开发服务器上的PHP,

是授权访问SOAP服务器的实时服务器(如果认证在IP级别上使用)

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

想着它具有安装香皂我不认为PHP本身就支持它,我认为它是一个梨或PECL包,如果您使用XAMPP或上的EasyPHP这些开发都两个都准备好包括在PHP。