Rumah > pembangunan bahagian belakang > tutorial php > Mengapa sambungan PHP SOAP saya gagal dengan \'SOAP-ERROR: Parsing WSDL: Couldn\'t load from [URL] : failed to load external entity [URL]\'?

Mengapa sambungan PHP SOAP saya gagal dengan \'SOAP-ERROR: Parsing WSDL: Couldn\'t load from [URL] : failed to load external entity [URL]\'?

Mary-Kate Olsen
Lepaskan: 2024-11-02 21:56:03
asal
785 orang telah melayarinya

Why does my PHP SOAP connection fail with

SOAP PHP Fault Parsing WSDL: Gagal Memuatkan Entiti Luar

Apabila cuba mewujudkan sambungan SOAP menggunakan PHP, anda mungkin menghadapi ralat "SOAP-ERROR: Menghuraikan WSDL: Tidak dapat memuatkan daripada [URL] : gagal memuatkan entiti luaran [URL]". Ralat ini menunjukkan bahawa klien SOAP tidak dapat mengakses fail WSDL yang dirujuk dalam pembina klien.

Langkah Penyelesaian Masalah:

  1. Pastikan WSDL fail tersedia dan boleh diakses: Sahkan bahawa fail WSDL yang dinyatakan dalam URL pembina klien wujud pada laluan yang ditentukan dan boleh diakses oleh klien SOAP.
  2. Lumpuhkan pengesahan SSL (Kebimbangan Keselamatan): Jika menggunakan PHP 5.6.5 atau lebih baru dan mewujudkan sambungan SOAP 1.2, menambah parameter SSL pada pembina klien boleh menyelesaikan isu:
<code class="php">$opts = array(
    'ssl' => array(
        'ciphers' => 'RC4-SHA',
        'verify_peer' => false,
        'verify_peer_name' => false
    )
);

$params = array(
    'encoding' => 'UTF-8',
    'verifypeer' => false,
    'verifyhost' => false,
    'soap_version' => SOAP_1_2,
    'trace' => 1,
    'exceptions' => 1,
    'connection_timeout' => 180,
    'stream_context' => stream_context_create($opts)
);

$wsdlUrl = $url . '?WSDL';
$oSoapClient = new SoapClient($wsdlUrl, $params);</code>
Salin selepas log masuk

Nota: Melumpuhkan pengesahan SSL ialah risiko keselamatan dan tidak boleh digunakan dalam persekitaran pengeluaran.

  1. Sahkan format fail WSDL: Pastikan fail WSDL ialah dokumen XML yang sah yang mematuhi spesifikasi WSDL.
  2. Semak ketersambungan rangkaian: Sahkan bahawa klien SOAP mempunyai akses rangkaian kepada pelayan yang mengehos fail WSDL.
  3. Pertimbangkan untuk menggunakan caching fail WSDL : Mendayakan caching fail WSDL dalam PHP boleh menghalang muat turun berulang dan meningkatkan prestasi:
<code class="php">ini_set("soap.wsdl_cache_enabled", "1");
ini_set("soap.wsdl_cache_ttl", "86400"); // 24 hours</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa sambungan PHP SOAP saya gagal dengan \'SOAP-ERROR: Parsing WSDL: Couldn\'t load from [URL] : failed to load external entity [URL]\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan