web-dev-qa-db-ja.com

キャッチされていないSoapFault例外:[HTTP] HTTPヘッダーのフェッチエラー

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-&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>

ありがとう

25
Remy

追加してみましたか

'trace'=>1,

soapClient作成パラメーターに、次に:

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

何が起こっているのかを見るには?

11
hegemon

サーバー側に問題がある場合、クライアントにこのエラーが表示される可能性があります。たとえば、SOAP=サーバーが解析エラーのあるPHPスクリプトである場合、クライアントはこのメッセージで失敗します。

サーバーを制御している場合は、SOAPサーバー。CentOSでは/ var/log/httpd/error_logにあるため、コマンドは:

tail -f/var/log/httpd/error_log

クライアントを更新して、エラーメッセージを確認します。サーバースクリプトでの任意のPHPエラーが表示されます。

それが誰かを助けることを願っています。

6
David Hurst

私は同じ問題に直面しました。
CLIとして実行していました。だからPHPは常に実行されていて、一定の間隔を置いて何度もsoap呼び出しを行わなければなりませんでした。
私がした間違いは、このためにシングルトンパターンを使用していたことです。私はシングルトンを使用するとパフォーマンスが向上すると考えましたが、

Error Fetching http headers in ...

呼び出しごとに新しいsaopオブジェクトを作成して修正しました。

4
Rahul Prasad

私はあなたのPHP構成についてではありませんが、PHP 5.2.6、PHPはSOAP client:

バグ#41983-HTTPヘッダーの取得エラー

Bug #41983

2
Posto

私は同じ問題に直面し、上記のすべての解決策を試しました。悲しいことに何も動作しません。

  1. ソケットタイムアウト(機能しません)
  2. ユーザーエージェント(動作していません)
  3. SoapClient設定、cache_wsdlおよびKeep-Aliveなど.

渡されるヘッダーのこのゲーム全体。 compression headerプロパティを追加することで問題を解決しました。実際には、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,
));

それが役に立てば幸い。

幸運を。

1
Sanjay Mohnani

これがMagento関連の問題である場合、ソケットのタイムアウト(または期限切れ)の原因になる可能性があるため、自動再インデックス付けをオフにする必要があります。スクリプトのタスクが完了したら、再び有効にできます。 php.iniのデフォルトのソケットタイムアウトを増やすこともお勧めです。

1

Php.iniを更新してください

default_socket_timeout = 120

PhpにApacheモジュールの代わりにCGIがインストールされている場合、独自のphp.iniを作成できます

0
Shahzeb chohan

私の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
saintsjd

PHPバージョン5.2.6未満の問題があります。 phpのバージョンをアップグレードする必要がある場合があります。

0
obiyoda