Magento api:指定的 Web 服务适配器无效
我需要做些什么来让magento中的api工作吗?
我正在本地安装 (1.7) 上访问 /api/soap/?wsdl,它返回以下错误:
Invalid webservice adapter specified.
一切看起来都在网站中启用,但我找不到任何关于我需要做的其他步骤的信息,以使api正常工作。
我需要做些什么来让magento中的api工作吗?
我正在本地安装 (1.7) 上访问 /api/soap/?wsdl,它返回以下错误:
Invalid webservice adapter specified.
一切看起来都在网站中启用,但我找不到任何关于我需要做的其他步骤的信息,以使api正常工作。
我已经通过关闭MultiViews选项解决了这个问题,如下所示:
从
<Directory /var/www/magento>
Options Indexes FollowSymLinks MultiViews
</Directory>
自
<Directory /var/www/magento>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
如果要保持与旧 API 调用的兼容性,则有不同的方法。由于一些不起眼的原因,我的Apache服务器在重写解析期间不会分析字符串。^api/...
但是您仍然可以在不更改Magento PHP代码的情况下使用。您只需要更改 .htaccess,如下所示:http://www.somedomain.com/api/v2_soap?wsdl=1
替换为 .htaccess:
RewriteRule ^api/([a-z][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]
由
RewriteRule ^api(\.php)?/([a-z][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L]
(请参阅 ^api.php/ 而不是 ^api/)
如果你们中的一些人有(V2_soap是大写的),你将不得不添加一个使用内部apache函数来设置小写的参数,那就更好了。将 RewriteMap 添加到您的虚拟主机:http://www.somedomain.com/api/V2_soap?wsdl=1
RewriteMap
RewriteMap lc int:tolower
在.htaccess中
RewriteRule ^api(\.php)?/([a-zA-Z][0-9a-z_]+)/?$ api.php?type=${lc:$2} [QSA,L]
这将设置为 api.php 脚本的参数小写,并在正则表达式中接受“V2_soap”
最后一部分是由@dreeves在这个答案中带来的