Исключить исключение SoapFault: Ошибка Получение заголовков HTTP

Я пытаюсь создать соединение с мылом с веб-службами Magento, однако я получаю сообщение об ошибке при попытке создать экземпляр класса клиента soap. Я могу просматривать wsdl-файл в firefox без проблем, и я могу посмотреть, как php делает запрос для wsdl в журналах apaches, но он все еще не работает. 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-&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> 

благодаря

Попробуйте установить:

 default_socket_timeout = 120 

в файле php.ini .

Вы пытались добавить

 'trace'=>1, 

к параметрам создания SoapClient, а затем:

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

посмотреть, что происходит?

Эта ошибка может появиться на клиенте, если на сервере возникла проблема. Например, если SOAP-сервер является скриптом PHP с ошибкой синтаксического анализа, клиент будет терпеть неудачу с этим сообщением.

Если вы контролируете сервер, запустите свой Apache error_log на компьютере, на котором размещен SOAP-сервер. В CentOS вы найдете это в / var / log / httpd / error_log, поэтому команда:

tail -f / var / log / httpd / error_log

Теперь обновите клиент и посмотрите сообщение об ошибке. Будут показаны любые ошибки PHP с помощью сценария сервера.

Надежда помогает кому-то.

Я столкнулся с такой же проблемой.
Я запускал его как CLI. Поэтому PHP всегда работал, и ему приходилось делать мыльный вызов снова и снова через некоторый интервал.
Ошибка, которую я сделал, это использовать одноэлементный шаблон для этого. Я думал, что использование синглтона приведет к повышению производительности, но я хочу, чтобы

 Error Fetching http headers in ... 

Я исправил его, создав новый объект saop для каждого вызова.

Я не о вашей конфигурации PHP, но до PHP 5.2.6 у PHP есть некоторые проблемы с клиентом SOAP:

Ошибка # 41983 – Ошибка получения заголовков http

Ошибка # 41983

Если это проблема, связанная с Magento, вы должны отключить автоматическую повторную индексацию, поскольку это может привести к таймауту сокета (или истечению срока его действия). Вы можете вернуть его обратно, как только скрипт завершит выполнение своих задач. Увеличение времени ожидания по умолчанию в 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.

Обновите свой php.ini

 default_socket_timeout = 120 

Вы можете создать свой собственный php.ini, если php установлен CGI вместо модуля Apache