首页 > 后端开发 > 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
原创
498 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板