service.wsdl ภายในเครื่องยังทำให้ SoapClient ดึงเอกสารระยะไกลระหว่างการสร้างได้ การทำให้ไฟล์แรกอยู่ภายในเครื่องลบเพียงการดาวน์โหลดครั้งแรกนั้น:

local service.wsdl
  → internal Common.xsd
  → external Types.xsd
       → another schema location

เริ่มที่การดึงครั้งแรกที่ล้มเหลว ก่อนการเรียกทางธุรกิจ SOAP ครั้งแรก ระบุทุก import ของ WSDL และทุก schema location รวมถึงเอกสารที่สิ่งเหล่านั้นอ้างถึงต่อไป เก็บ URL ฐานหรือเส้นทางที่ใช้แก้ไขการอ้างอิงแบบสัมพัทธ์แต่ละรายการ แยกโฮสต์ภายในออกจากทรัพยากรที่จำเป็นต้องใช้ proxy ภายนอกจริง ๆ

proxy ของ SoapClient ที่ระบุชัดเจนสามารถส่ง schema ภายในผ่านตัวกลางที่มีมุมมอง DNS หรือนโยบายการเข้าถึงต่างกันได้ ตัวแปร no_proxy ระดับโปรเซสไม่ได้ยืนยันว่าเส้นทางการโหลดนี้อ่านค่านั้น ใช้ตัวเลือกที่มีเอกสารกำกับสำหรับ PHP เวอร์ชันของคุณ การตั้งชื่อตัวเลือกตามตัวแปรสภาพแวดล้อมไม่ได้สร้างตัวเลือกต่อการนำเข้า

หากต้องการติดตั้งคำจำกัดความทั้งหมดภายในเครื่อง ให้ได้รับเวอร์ชันที่อนุมัติของชุดการพึ่งพาทั้งหมด อัปเดตตำแหน่ง import ที่เกี่ยวข้องไปยังบันเดิลภายในเครื่อง และรักษาฐานเส้นทางสัมพัทธ์ไว้ กำหนดเวอร์ชันเอกสารเหล่านั้นร่วมกัน เพื่อให้ WSDL รากใหม่ไม่ใช้ชนิดที่ล้าสมัย

อย่าแตะต้องตัวระบุ namespace แม้จะดูเหมือน URL แต่ก็ระบุคำศัพท์ของ schema ไม่ใช่บอกตัวโหลดว่าจะดึงไฟล์จากที่ใด การแทนที่อาจเปลี่ยนสัญญาบริการ

ทดสอบการสร้างใหม่พร้อมบันทึกสถานะแคช: คำจำกัดความที่แคชไว้อาจซ่อนการพึ่งพาที่ขาดหายบนเครื่องหนึ่ง การเขียนทับ URL บริการใช้ในขั้นตอนถัดไป และ __doRequest() ที่กำหนดเองจัดการการแลกเปลี่ยน SOAP ทั้งสองอย่างไม่ควรถูกสันนิษฐานว่าเขียนใหม่หรือดักจับการดาวน์โหลด schema ทั้งหมดในเวลาสร้าง

บทความที่เกี่ยวข้อง