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
Mary-Kate Olsenasal
2024-11-02 21:56:03738semak imbas

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>

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>

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:
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