我有一些代码通过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");
我会在dev服务器上检查已安装的PHP软件包,并与Prod服务器进行比较。 http://fr2.php.net/manual/en/soap.setup.php – 2011-05-27 15:30:44
打开error_reporting。一个“白色屏幕”通常意味着PHP呕吐,并已设置为隐藏所有错误,所以你什么也得不到。另外,如果PHP已经配置完成,请检查服务器(和/或php的)错误日志,看看里面是否有任何东西。它可能不会在浏览器中吐出错误消息,但它们可能会在某处登录。 – 2011-05-27 15:31:11
@菲尔,谢谢。我只是这样做,并且感到惊讶!我们的现场(托管)服务器根本没有安装SOAP!如果你想把这个评论转换成答案,我会接受它,所以你得到了信用。 – EmmyS 2011-05-27 15:38:23