7

したがって、エラーは次のとおりです。

PHP Fatal error: Procedure 'sup:set_availability' not present in XMLSoapServer.php

私の開発環境 (MAMP) でこのエラーが発生しています。

これは、'sup' 名前空間が定義されていない無効な XML 文字列が原因です。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" 
    xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <sup:set_availability>
            <SetAvailability>
                ...
            </SetAvailability>
        </sup:set_availability>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

(これは外部からの要求なので、ソースを修正することはできません。できることはありますが、少なくともすぐにではありません。)

問題は、同じリクエストを処理している 2 つのサーバーを取得したことです。エラーなし。だから私の探求は理由を見つけることです:)

いくつかの詳細:

  • サーバー 1: php 5.3.2
  • サーバー 2: PHP 5.4
  • 開発: php 5.4

これまでに確認したこと:

  • コードは同じsvn-checkoutです
  • 非表示の開発または本番のみの設定はありません
  • Apacheの設定は同じです
  • wsdl キャッシュが無効になり、キャッシュされた wsdl がクリアされます
  • libxml2 を除いて、php.ini 設定は同じです。

サーバー 1 にはバージョン 2.6.26 があり、サーバー 2 にはバージョン 2.7.7 があります - リクエストは魅力的に機能します 私の開発環境には lixml2 バージョン 2.8.0 があり、致命的なエラーをスローします。

私の推測では、libxml2 がエラーを引き起こしている (またはそうであった) と思われますが、このトピックに関するリソースが見つかりません。また、ローカルの libxml2 バージョンを 2.6 または 2.7 にダウングレードすることにも成功しませんでした。

それで...これについて何か考えはありますか?

4

4 に答える 4

2

何が問題なのかはわかりませんが、ネイティブの PHP SoapClient は常に少し「不透明」に見えるので、Dklab_SoapClient ライブラリを使用するのが好きです。

Curl を使用して Soap データを取得し、ネイティブの PHP クラスよりもはるかに柔軟です。さらに、必要に応じて拡張して独自の機能を追加することもできます:)それで問題が解決すると思います。

ただし、外部ライブラリを使用したくない場合は、何が原因なのかわかりません...

于 2014-05-05T15:58:33.667 に答える