![](/img/trans.png)
[英]Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers
[英]Uncaught SoapFault exception: [HTTP] Error Fetching http headers
我正在尝试创建与Magento的Web服务的soap连接,但是当我尝试创建soap客户端类的实例时,我遇到了错误。 我可以毫无问题地在firefox中查看wsdl文件,我可以看到php在apaches日志中发出wsdl的请求,但它仍然失败。 Nusoap可以连接。
$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->__doRequest('<?xml version="...', 'http://cornishw...', 'urn:Mage_Api_Mo...', 1, 0)
[internal function]: SoapClient->__call('call', Array)
/home/sites/xxx/xxx_main/system/application/views/contentpage_templates/gift_service.php(29): SoapClient->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->_ci_load(Array, '')
/home/sites/xxx/xxx_main/system/application/modules/contentpage/controllers/contentpage.php(44): MY_Loader->view('contentpage_tem...', false, true)
[internal function]: Contentpage->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>
谢谢
尝试设置:
default_socket_timeout = 120
在你的php.ini
文件中。
你尝试过添加吗?
'trace'=>1,
到SoapClient创建参数然后:
var_dump($client->__getLastRequest());
var_dump($client->__getLastResponse());
看看发生了什么?
如果服务器端出现问题,则此错误可能会出现在客户端上。 例如,如果SOAP服务器是具有解析错误的PHP脚本,则客户端将失败并显示此消息。
如果您控制服务器,请在托管SOAP服务器的计算机上拖动Apache error_log。 在CentOS上你可以在/ var / log / httpd / error_log中找到它,所以命令是:
tail -f / var / log / httpd / error_log
现在刷新客户端并观察错误消息。 将显示服务器脚本的任何PHP错误。
希望能帮助别人。
我遇到了同样的问题。
我以CLI身份运行它。 所以PHP总是在运行,它必须在一段时间后一次又一次地进行肥皂调用。
我做的错误是使用单例模式。 我认为使用singleton会导致性能提升,但我得到了
Error Fetching http headers in ...
我通过为每个调用创建新的saop对象来修复它。
如果这是与Magento相关的问题,则应关闭自动重新索引,因为这可能导致套接字超时(或过期)。 脚本完成任务后,您可以将其重新打开。 增加php.ini中的默认套接字超时也是一个好主意。
我遇到了同样的问题并尝试了上述所有解决方案。 可悲的是没有用。
我们传递的整个标题游戏。 我通过添加压缩标头属性解决了我的问题。 当您期望以gzip压缩格式进行响应时,这实际上需要。
//set the Headers of Soap Client.
$client = new SoapClient($wsdlUrl, array(
'trace' => true,
'keep_alive' => true,
'connection_timeout' => 5000,
'cache_wsdl' => WSDL_CACHE_NONE,
'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | SOAP_COMPRESSION_DEFLATE,
));
希望能帮助到你。
祝好运。
请用你的php.ini更新
default_socket_timeout = 120
如果php安装了CGI而不是Apache模块,您可以创建自己的php.ini
在我的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的所有内容。 现在一切正常。
php版本中存在小于5.2.6的问题。 您可能需要升级php的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.