Vấn đề của tôi rất phổ biến. Tôi đã đọc gần như tất cả các chủ đề về stackoverflow về vấn đề này, nhưng vẫn không thể làm việc. Mã của tôi là:Lỗi WSDL: SOAP-ERROR: Phân tích cú pháp WSDL: Không thể tải từ
ini_set("soap.wsdl_cache", "0");
ini_set("soap.wsdl_cache_enabled", "0");
$proxy = new SoapClient('http://Myhostname/api/soap?wsdl');
Tôi có lỗi này:
Error WSDL: SOAP-ERROR: Parsing WSDL: Couldn't load from
'http://Myhostname/api/soap?wsdl' : failed to load external entity
"http://Myhostname/api/soap?wsdl"
Trong trình duyệt URL
http://Myhostname/api/soap?wsdl
hoạt động tuyệt vời (trả về một phản ứng xml)
tôi cố gắng này mã để xem liệu PHP có thể truy cập URL này không:
if (file_get_contents('http://Myhostname/api/soap?wsdl') === false) {
echo "ERROR: file_get_contents <br/>";
}
Nó hiển thị cho tôi lỗi của tôi "L ERI: file_get_contents", vì vậy nó không hoạt động. Trên diễn đàn tôi thấy rằng để giải quyết vấn đề này tôi phải thêm tên máy chủ vào hệ điều hành "host" tập tin. Vì vậy, tôi đã làm nó. Trong tệp lưu trữ của tôi, tôi đã thêm dòng này 127.0.0.1 Myhostname
Nhưng nó vẫn không hoạt động. Sau đó, tôi đã thay đổi URL trong mã của mình thành
http://localhost/Myhostname/api/soap?wsdl
nhưng không hoạt động.
Tôi đã thử một giải pháp khác mà tôi tìm thấy trên internet. Đối với một số người nó đã làm việc. Trong URL của tôi, tôi đã thay đổi '?' ký tự '.'. Vì vậy, URL mới của tôi đã trở thành
http://localhost/Myhostname/api/soap.wsdl
nhưng nó không hoạt động.
Tôi đã thấy official SOAP doc! Và cố gắng tạo đối tượng SoapClient theo cách khác (với các tùy chọn như 'proxy_host' và 'proxy_port'). Nhưng điều này không giúp tôi.
Đây là ngày thứ hai tôi cố giải quyết vấn đề này, nhưng tôi không thể. Tôi đang thực tập, tôi không có nhiều kinh nghiệm, vì vậy có lẽ tôi đã không thử các giải pháp mà tôi đã tìm thấy một cách chính xác. Có lẽ ai đó có thể giúp đỡ. Tôi sẽ rất hài lòng.
Tôi nghĩ rằng trong một số trường hợp, bạn không thể file_get_contents() vào tên máy chủ * từ * chính máy chủ đằng sau tên máy chủ đó. Bạn đã thử chạy mã này từ môi trường cục bộ chưa? – kalenjordan
Bạn đã thử 'http: //127.0.0.1/Myhostname/api/soap? Wsdl'? –
Thực ra đó là một số loại vấn đề cấu hình máy chủ. Người giám sát của tôi đã sửa nó. Cảm ơn các bạn. – Kalitine