首頁 > 後端開發 > php教程 > 當腳本在 WAMP 上運行時,為什麼 Linux 伺服器上會出現「SOAP-ERROR: Parsing WSDL: Couldn't Load from 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'」?

當腳本在 WAMP 上運行時,為什麼 Linux 伺服器上會出現「SOAP-ERROR: Parsing WSDL: Couldn't Load from 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'」?

Susan Sarandon
發布: 2024-11-13 12:46:02
原創
510 人瀏覽過

Why does

SOAP-錯誤:正在解析WSDL:無法從「http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl」載入 h1>

當嘗試在Linux 主伺服器上使用SoapClient時,使用者可能會遇到錯誤訊息「SOAP-ERROR:正在解析WSDL:無法從「http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl」載入。」儘管腳本在WAMP 伺服器上正常執行,但仍會出現此問題。

要解決此問題,建議探索伺服器和 WAMP 環境之間 PHP 版本的潛在差異。較舊的 PHP 版本可能缺乏透過 SoapClient 請求發送使用者代理字串所需的功能。

如果是這種情況,明確指定使用者代理字串可以解決該問題。這可以透過使用流上下文來實現,如下所示:

try {
    $opts = array(
        'http' => array(
            'user_agent' => 'PHPSoapClient'
        )
    );
    $context = stream_context_create($opts);

    $wsdlUrl = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl';
    $soapClientOptions = array(
        'stream_context' => $context,
        'cache_wsdl' => WSDL_CACHE_NONE
    );

    $client = new SoapClient($wsdlUrl, $soapClientOptions);

    $checkVatParameters = array(
        'countryCode' => 'DK',
        'vatNumber' => '47458714'
    );

    $result = $client->checkVat($checkVatParameters);
    print_r($result);
}
catch(Exception $e) {
    echo $e->getMessage();
}
登入後複製

或者,據觀察,此問題可能是由於 HTTP over IPv6 的組合和缺少用戶代理字串而引起的在請求中。在這些條件下,涉及的 Web 服務可能會出現問題。

要確認這一點,請在Linux 主機上執行以下命令:

curl -A '' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
登入後複製

如果IPv6 要求失敗,請嘗試新增使用者代理字串:

curl -A 'cURL User Agent' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
登入後複製

兩個IPv4 請求都應該成功:

curl -A '' -4 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
curl -A 'cURL User Agent' -4 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
登入後複製

如果這些觀察結果成立是的,Linux主機可能會將 URL 解析為其 IPv6 位址,且伺服器上的 SoapClient 版本預設不會附加使用者代理字串。

以上是當腳本在 WAMP 上運行時,為什麼 Linux 伺服器上會出現「SOAP-ERROR: Parsing WSDL: Couldn't Load from 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板