2012-12-18 37 views
17

Có bất kỳ điều gì cụ thể tôi cần làm để nhận api trong Magento hoạt động không?Magento api: Bộ điều hợp dịch vụ web không hợp lệ được chỉ định

tôi đến thăm wsdl/api/xà phòng/trên cài đặt cục bộ của tôi (1.7) và nó sẽ trả về các lỗi sau:

Invalid webservice adapter specified. 

Mọi thứ trông cho phép trong trang web, nhưng tôi không thể tìm thấy bất kỳ thông tin về các bước khác tôi cần phải làm để api làm việc.

+2

/index.php/api/V2_soap?wsdl=1 bạn đã thử – chanz

+0

này ok để làm việc này chỉ khi index.php được bao gồm trong url. Tại sao điều này? –

+0

index.php là không cần thiết, bạn có thể thử cách này quá www.yourmagento.com/api/V2_soap?wsdl=1 – chanz

Trả lời

35

Tôi đã giải quyết này từ htaccess bằng cách tắt tùy chọn MultiViews như thế này:

từ

<Directory /var/www/magento> 
      Options Indexes FollowSymLinks MultiViews 
</Directory> 

để

<Directory /var/www/magento> 
      Options +Indexes +FollowSymLinks -MultiViews 
</Directory> 
+1

Làm việc cho tôi, cảm ơn bạn! – azendh

+0

Khắc phục sự cố, cảm ơn! – Sven

+2

Điều này gây lỗi apache 'Hoặc tất cả Tùy chọn phải bắt đầu bằng + hoặc -, hoặc không có Tùy chọn có thể' Vì vậy, cú pháp chính xác cho ở trên nên là' Options + Indexes + FollowSymLinks -MultiViews' – Gihan

2

Có một cách tiếp cận khác nếu bạn muốn giữ tính tương thích với các cuộc gọi API cũ. Đối với một số lý do không rõ ràng, máy chủ Apache của tôi không phân tích chuỗi ^api/... trong quá trình phân tích cú pháp viết lại.

Nhưng bạn vẫn có thể sử dụng http://www.somedomain.com/api/v2_soap?wsdl=1 mà không thay đổi mã PHP Magento. Bạn chỉ cần thay đổi .htaccess như sau:

Thay thế trong .htaccess:

RewriteRule ^api/([a-z][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]

bởi

RewriteRule ^api(\.php)?/([a-z][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L] (xem^api.php/thay vì^api /)

Và thậm chí tốt hơn nếu một số bạn, có http://www.somedomain.com/api/V2_soap?wsdl=1 (V2_soap là chữ hoa), bạn sẽ phải thêm RewriteMap để sử dụng hàm apache nội bộ để đặt chữ thường thành thông số. Thêm vào máy chủ ảo của bạn RewriteMap:

RewriteMap lc int:tolower

Và trong .htaccess

RewriteRule ^api(\.php)?/([a-zA-Z][0-9a-z_]+)/?$ api.php?type=${lc:$2} [QSA,L]

này sẽ thiết lập thành chữ thường các tham số cho kịch bản api.php và cũng chấp nhận 'V2_soap' trong cụm từ thông dụng

Phần cuối cùng này đã được mang bởi @dreeves in this answer

0

tôi giải quyết điều này bằng cách chỉnh sửa trong file host ảo của tôi (/etc/apache2/sites-available/mag.dev.conf) như này:

<Directory /var/www/mag/mag> 
     Options +Indexes +FollowSymLinks -MultiViews 
     ..... 
    </Directory> 

hiện đang tải phản hồi xml.

các platfrom là ubuntu 12.04

Các vấn đề liên quan