WSDL lokal tetap bisa mengirim SoapClient ke jaringan
Lacak impor WSDL dan XML Schema transitif saat definisi layanan lokal masih mencampur rute proxy internal dan eksternal.
Sebuah service.wsdl lokal masih dapat membuat SoapClient mengambil dokumen jarak jauh selama konstruksi. Menjadikan berkas pertama lokal hanya menghapus unduhan pertama itu:
local service.wsdl
→ internal Common.xsd
→ external Types.xsd
→ another schema location
Mulailah dari pengambilan pertama yang gagal, sebelum panggilan bisnis SOAP pertama. Daftar setiap impor WSDL dan setiap schema location, termasuk dokumen yang mereka rujuk pada gilirannya. Pertahankan URL atau jalur dasar yang dipakai untuk menyelesaikan setiap referensi relatif. Pisahkan host internal dari sumber daya yang benar-benar membutuhkan proxy eksternal.
Sebuah proxy SoapClient eksplisit dapat mengirim schema internal melalui perantara dengan pandangan DNS atau kebijakan akses berbeda. Variabel no_proxy pada tingkat proses tidak membuktikan bahwa jalur pemuatan ini membacanya. Gunakan opsi yang didokumentasikan untuk versi PHP Anda; menamai opsi menurut variabel lingkungan tidak menciptakan pemilih per impor.
Untuk menempatkan definisi sepenuhnya secara lokal, dapatkan versi yang disetujui dari seluruh rangkaian dependensi, perbarui lokasi impor yang berlaku ke bundel lokal, dan pertahankan basis jalur relatifnya. Versikan dokumen tersebut bersama-sama agar WSDL akar baru tidak memakai tipe yang usang.
Jangan ubah pengenal namespace. Itu bisa tampak seperti URL, tetapi mengidentifikasi kosakata schema alih-alih memberi tahu pemuat dari mana mengambil berkas. Menggantinya dapat mengubah kontrak layanan.
Uji ulang konstruksi dengan status cache tercatat: definisi yang di-cache dapat menyembunyikan dependensi yang hilang di satu mesin. Penggantian URL layanan berlaku pada tahap yang lebih akhir, dan __doRequest() khusus menangani pertukaran SOAP; keduanya tidak boleh diasumsikan menulis ulang atau mencegat semua unduhan schema saat konstruksi.