Magento で API を動作させるために必要な特定のことはありますか?
ローカル インストール (1.7) で /api/soap/?wsdl にアクセスすると、次のエラーが返されます。
Invalid webservice adapter specified.
サイトですべてが有効になっているように見えますが、API を機能させるために必要な他の手順に関する情報が見つかりません。
次のようにMultiViewsオプションをオフにすることで、htaccessからこれを解決しました。
から
<Directory /var/www/magento>
Options Indexes FollowSymLinks MultiViews
</Directory>
に
<Directory /var/www/magento>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
古い API 呼び出しとの互換性を維持したい場合は、別のアプローチがあります。なんらかの理由で、Apache サーバーは^api/...
書き換えの解析中に文字列を分析しません。
ただし、http://www.somedomain.com/api/v2_soap?wsdl=1
Magento PHP コードを変更せずに引き続き使用できます。次のように .htaccess を変更するだけです。
.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/ の代わりに ^api.php/ を参照してください)
また、http://www.somedomain.com/api/V2_soap?wsdl=1
(V2_soap は大文字) を持っている人がいる場合は、RewriteMap
内部 apache 関数を使用してパラメーターを小文字で設定するために を追加する必要があります。仮想ホストに 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によってもたらされました