最近将 Magento 从 1.9.1 更新到 1.9.2。
升级之前,API 连接运行良好。 升级后,我们立即收到以下错误:
“SOAP 错误:正在解析 WSDL:无法从 'example.com/index.php/api/?wsdl' :需要开始标记,'<' not found "
它可以从我们的浏览器加载良好;就在我们的仓库尝试连接时,它返回此错误。
PHP 致命错误:SOAP-错误:正在解析 WSDL:无法从以下位置加载 'http://example.com/index.php/api/v2_soap/index/?wsdl=1':开始标记 预计,'<' not found in /lib/Zend/Soap/Server.php on line 814
出现此问题的原因是服务器启用了 GZIP。 我们禁用了 GZIP,API 运行顺利。由于某种原因,启用 GZIP 时 SOAP 请求不会成功。
但是,由于我们希望为站点启用 GZIP,因此我们将以下代码添加到 .htaccess 文件中。这对 API 请求禁用了 GZIP,但对站点的其余部分保持启用 GZIP。
# for URL paths that begin with "/index.php/api/"
SetEnvIf Request_URI ^/index.php/api/ no-gzip=1