Ralat SOAP PHP: Menghuraikan WSDL: Gagal Memuatkan Entiti Luar
Analisis Isu
Mesej ralat yang disediakan menunjukkan masalah dengan klien SOAP yang cuba memuatkan fail WSDL daripada URL yang ditentukan, "http://localhost/MyRegistration/login.xml". Walau bagaimanapun, ia menghadapi ralat yang melibatkan pemuatan entiti luaran, khususnya fail WSDL yang sama.
Langkah Penyelesaian Masalah
-
Sahkan URL WSDL: Pastikan bahawa fail WSDL terletak pada URL yang ditentukan dan ia boleh diakses oleh SOAP klien.
-
Semak Kebenaran Fail: Pastikan fail WSDL mempunyai kebenaran fail yang sesuai untuk membolehkannya dibaca oleh pelayan web yang mengehos klien SOAP.
- Uji Pengesahan WSDL: Gunakan pengesah WSDL dalam talian atau alat seperti SoapUI untuk mengesahkan fail WSDL untuk sebarang ralat atau ketidakkonsistenan.
-
Lumpuhkan Pemuatan Entiti Luar XML: Dalam PHP 5.6.5 dan lebih baharu, pemuatan entiti luaran dalam XML dilumpuhkan secara lalai. Untuk mendayakannya, anda boleh menambah baris berikut pada kod PHP anda sebelum mencipta klien SOAP:
<code class="php">libxml_disable_entity_loader(false);</code>
Salin selepas log masuk
Parameter SSL Pilihan
Jika anda menggunakan PHP 5.6.5 atau lebih baru, anda mungkin perlu menentukan parameter SSL tambahan semasa membuat klien SOAP untuk membenarkan ketidakselamatan sambungan:
<code class="php">$opts = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
);
$params = array(
'context' => stream_context_create($opts)
);
$sClient = new SoapClient($wsdlUrl, $params);</code>
Salin selepas log masuk
Petua Tambahan
- Pastikan sambungan PHP dan SOAP anda dipasang dan dikonfigurasikan dengan betul.
- Semak jika ada adakah sebarang tembok api atau tetapan keselamatan menyekat akses kepada fail WSDL.
- Cuba gunakan yang lain Fail WSDL atau titik akhir untuk menghapuskan kemungkinan isu khusus dengan fail WSDL.
- Jika isu itu berterusan, rujuk dokumentasi SOAP PHP atau dapatkan bantuan daripada pembangun web berpengalaman.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat PHP SOAP: Menghuraikan WSDL: Gagal Memuatkan Entiti Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!