2011-05-27 50 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。