SOAP客户端导致PHP出现500或502错误

时间:2014-02-03 13:46:33

标签: php soap

我在新的专用服务器上遇到SOAP问题。脚本在我们的舞台服务器上工作得非常好,但是当我从实时站点尝试这些功能时它只是不起作用。

该脚本创建一个soap实例,然后将一些信息发送给跟踪公司。

我们使用的实时服务器是全新的,并安装了centOS。我使用yum install安装了php-pear和soap,但没有任何改变。

如果我使用CGI或Fast CGI运行php,我只会得到500内部错误,但如果我使用Apache模块运行它,我会用ngix获得502 Bad Gateway错误,下面是测试代码的示例。如果你能帮助我解决这个问题,我将不胜感激。

提前致谢

<?
error_reporting(E_ALL);
//echo (dirname(__FILE__));
require_once('soap-wsa.php');
require_once('soap-wsse.php');

class mySoap extends SoapClient {
    function __doRequest($request, $location, $saction, $version) {
        $doc = new DOMDocument('1.0');
        $doc->loadXML($request);

        $objWSA = new WSASoap($doc);
        $objWSA->addAction($saction);
        $objWSA->addTo($location);
        $objWSA->addMessageID();
        $objWSA->addReplyTo();

        $doc = $objWSA->getDoc();

        $objWSSE = new WSSESoap($doc);

        /* add Timestamp with no expiration timestamp */
        $objWSSE->addTimestamp();
        $objWSSE->addUserToken('xxx','xxxxx',TRUE);
        return parent::__doRequest($objWSSE->saveXML(), $location, $saction, $version);
    }

}

$wsdl_base = 'http://stage.xxxx.com/SmartLeadImport/';

$wsdl   = $wsdl_base.'SmartLeadImport.asmx?wsdl';
$to     = $wsdl_base.'SmartLeadImport.asmx';
$action = $wsdl_base.'Lookup_SAT';

$leadObject = array(
'Lead' => array(
    'Company' => 'Test',
    'LeadID' => array(
            'Type'  => 'Client',
            'Value' => '1234567'
        ),
    'Person' => array(
            'FirstName' => 'Test',
            'LastName'  => 'Testerson'
        )
)
);

echo '<pre>';
try {
$sClient = new mySoap($wsdl, array('trace' => 1));
/* Force location path - MUST INCLUDE trailing slash
BUG in ext/soap that does not automatically add / if URL does not contain path cause POST header to be invalid */
$sClient->location = $to;
$sClient->saction  = $action;
$test              = $sClient->Lookup_SAT(array('SATCode' => 1));

print_r($test->Lookup_SATResult);
} catch (SoapFault $e) {
print_r($e);
}
echo '</pre>';

1 个答案:

答案 0 :(得分:0)

我发现导致问题的原因。

起初我们服务器的时间错了,我修好了,好吧我以为我修好了,但想的是服务器时间应与美国海军天文台主时钟时间同步

http://tycho.usno.navy.mil/simpletime.html

只允许3分钟的差异。我的是5分钟。我已经改变了服务器时间,现在一切都很好。