2009-05-28 112 views
21

我試圖創建一個到Magento的Web服務的soap連接,但是當我嘗試創建soap客戶端類的實例時遇到錯誤。我可以在firefox中查看wsdl文件,沒有任何問題,我可以看到php在apaches日誌中發出wsdl的請求,但仍然失敗。 Nusoap可以連接。未捕獲的SoapFault異常:[HTTP]錯誤獲取http標頭

$proxy = new SoapClient('someaddress?wsdl'); 

的錯誤是

<b>Fatal error</b>: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in /home/sites/xxx/xxx_main/system/application/views/contentpage_templates/gift_service.php:29 
Stack trace: 
[internal function]: SoapClient-&gt;__doRequest('&lt;?xml version=&quot;...', 'http://cornishw...', 'urn:Mage_Api_Mo...', 1, 0) 
[internal function]: SoapClient-&gt;__call('call', Array) 
/home/sites/xxx/xxx_main/system/application/views/contentpage_templates/gift_service.php(29): SoapClient-&gt;call(NULL, 'catalog_categor...', 5, 'giftshop') 
/home/sites/xxx/xxx_main/system/application/libraries/MY_Loader.php(586): include('/home/sites/cor...') 
/home/sites/xxx/xxx_main/system/application/libraries/MY_Loader.php(228): MY_Loader-&gt;_ci_load(Array, '') 
/home/sites/xxx/xxx_main/system/application/modules/contentpage/controllers/contentpage.php(44): MY_Loader-&gt;view('contentpage_tem...', false, true) 
[internal function]: Contentpage-&gt;index() 
/home/sites/xxx in <b>/home/sites/xxx/xxx_main/system/application/views/contentpage_templates/gift_service.php</b> on line <b>29</b> 

感謝

+1

我可能是錯了,但本着「gift_service你可以創建自己的php.ini .php(29):SoapClient- >在調用堆棧中調用(NULL,'catalog_categor ...',「似乎不對應於」$ proxy = new SoapClient「,但類似於」proxy-> catalog_categories()「 ?請(double)在gift_service.php中檢查第29行 – VolkerK 2009-05-28 14:04:31

回答

33

嘗試設置:

default_socket_timeout = 120 

php.ini文件。

+4

這對我來說與Magento完全無關。 – mindeh 2010-04-13 10:03:32

11

你嘗試加入

'trace'=>1, 

以創建SoapClient的參數,然後:

var_dump($client->__getLastRequest()); 
var_dump($client->__getLastResponse()); 

,看看到底是怎麼回事?

+0

這有助於我看到我的soap請求缺少正確的參數,但我不知道爲什麼我的wsdl文件沒有更新corr ectly。 – 2015-11-10 10:37:34

0

在我的Apache的錯誤日誌,我看到:

[Tue Feb 16 14:55:02 2010] [notice] child pid 9985 exit signal File size limit exceeded (25) 

所以我打消了我最大的日誌文件2.1GB /var/log/system.log的所有內容。現在一切正常。

0

在5.2.6版以下的php版本中存在一個問題。您可能需要升級php的版本。

6

如果服務器端存在問題,則客戶端可能會出現此錯誤。例如,如果SOAP服務器是具有分析錯誤的PHP腳本,則客戶端將失敗,並顯示此消息。

如果您在控制服務器,請在承載SOAP服務器的計算機上尾隨Apache error_log。在CentOS你會發現這個在/ var /日誌/的httpd/error_log中,這樣的命令是:

尾-f /無功/日誌/的httpd/error_log中

現在刷新客戶端,並觀察該錯誤信息。將顯示服務器腳本的任何PHP錯誤。

希望能幫助別人。

1

如果這是一個Magento相關的問題,你應該關閉自動重新索引,因爲這可能會導致套接字超時(或過期)。腳本完成任務後,您可以將其重新打開。增加php.ini中的默認套接字超時也是一個好主意。

4

我面臨同樣的問題。
我正在運行它作爲CLI。所以PHP一直在運行,並且在一定的時間間隔後必須一次又一次地進行肥皂呼叫。
我做的錯誤是使用單例模式。我想使用單會造成性能提升,但inturn我

Error Fetching http headers in ... 

我通過爲每個調用創建新SAOP對象固定它。

0

請更新您的php.ini

default_socket_timeout = 120 

如果PHP安裝了CGI,而不是一個Apache模塊

相關問題