肥皂错误:解析 WSDL:无法从“http://.”加载.'在谷歌应用引擎PHP应用程序中


SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://...' in Google App Engine PHP App

我正在尝试使用简单的PHP脚本从我的GAE账户连接到亚马逊云科技。但是,第一行抛出错误:

$wsdlURI = 'http://www.webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl';$soapClient = new SoapClient($wsdlURI);

我收到此错误:SOAP-ERROR:解析 WSDL:无法从"http://....."加载,无法加载外部实体

当我对上面的 URL 进行简单的file_get_contents时,它工作得很好。只有 SoapClient 无法获取 wsdl 文件的句柄。只有GAE似乎有这个问题。我在另一台服务器上尝试了相同的代码,一切正常。

GAE 中是否有我缺少的任何设置?

这也与默认情况下禁用加载外部实体的加载有关,您需要启用此功能才能使其正常工作。

首先,您必须创建一个包含以下行的 php.ini 文件:

google_app_engine.enable_functions = "libxml_disable_entity_loader"

然后,在通话前添加以下内容。

libxml_disable_entity_loader(false);

要使 SoapClient 使用套接字应用程序工作,还需要启用计费。

此问题可能与以下问题有关:https://code.google.com/p/googleappengine/issues/detail?id=9858 .看起来 SOAP 需要套接字支持,这还不是 PHP 运行时的一部分。

检查您是否激活了以下扩展:PHP Open SSL和PHP SOAP 客户端。