Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Klien PHP SOAP Saya Tidak Boleh Memuatkan Fail WSDL Luaran?

Mengapa Klien PHP SOAP Saya Tidak Boleh Memuatkan Fail WSDL Luaran?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 06:14:02559semak imbas

Why Can't My SOAP PHP Client Load the External WSDL File?

SOAP PHP Fault Parsing WSDL: Gagal Memuatkan Entiti Luar

Isu: Apabila cuba menjalankan perkhidmatan web menggunakan PHP dan SOAP, ralat ditemui: "SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost/MyRegistration/login.xml' : failed to load external entity "http://localhost/MyRegistration /login.xml"".

Jawapan:

Mesej ralat menunjukkan bahawa klien SOAP tidak dapat memuatkan fail WSDL luaran daripada URL yang ditentukan. Ini boleh berlaku atas beberapa sebab:

  • URL Salah: Pastikan URL yang disediakan dalam pembina SoapClient (http://127.0.0.1/MyRegistration/login.wsdl) adalah betul dan boleh diakses.
  • Sekatan Keselamatan: Secara lalai, PHP tidak akan membenarkan entiti luar dimuatkan kerana kebimbangan keselamatan. Anda boleh melumpuhkan sekatan ini dengan menambahkan baris berikut pada skrip PHP anda:

    <code class="php">libxml_disable_entity_loader(false);</code>

Nota: Melumpuhkan sekatan keselamatan harus dilakukan dengan berhati-hati, kerana ia boleh buka aplikasi anda kepada kemungkinan kelemahan.

  • Entiti Dalaman: Mesej ralat secara khusus menyebut ketidakupayaan untuk memuatkan entiti luaran. Ini menunjukkan bahawa mungkin terdapat rujukan entiti dalaman dalam fail WSDL yang menyebabkan isu tersebut. Semak fail WSDL untuk sebarang rujukan kepada entiti XML lain.
  • Ruang Nama WSDL: Pastikan ruang nama yang dinyatakan dalam fail WSDL sepadan dengan ruang nama yang digunakan dalam pembina PHP SoapClient (cth., urn :LoginVal).

Pertimbangan Tambahan:

  • Pastikan pelayan SOAP berjalan pada URL dan port yang ditentukan (iaitu, http:/ /localhost/MyRegistration/register.php).
  • Semak kebenaran pada fail login.wsdl untuk memastikan ia boleh dibaca oleh pelayan web.
  • Jika anda masih mengalami masalah, pertimbangkan untuk menggunakan fungsi soap_client_call terbina dalam untuk mendapatkan semula WSDL secara manual daripada URL yang ditentukan.

Atas ialah kandungan terperinci Mengapa Klien PHP SOAP Saya Tidak Boleh Memuatkan Fail WSDL Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn