Un service.wsdl local poate determina încă SoapClient să aducă documente la distanță în timpul construirii. Transformarea primului fișier în unul local elimină doar acea primă descărcare:

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

Începeți cu prima aducere eșuată, înainte de primul apel de afaceri SOAP. Enumerați fiecare import WSDL și fiecare schema location, inclusiv documentele la care acestea trimit la rândul lor. Păstrați URL-ul sau calea de bază folosită pentru rezolvarea fiecărei referințe relative. Separați gazdele interne de resursele care au într-adevăr nevoie de proxy-ul extern.

Un proxy SoapClient explicit poate trimite o schemă internă printr-un intermediar cu altă vedere DNS sau altă politică de acces. O variabilă no_proxy la nivel de proces nu dovedește că această cale de încărcare o citește. Folosiți opțiunile documentate pentru versiunea dumneavoastră de PHP; a numi o opțiune după o variabilă de mediu nu creează un selector pentru fiecare import.

Pentru a implementa definițiile complet local, obțineți versiunile aprobate ale întregului set de dependențe, actualizați locațiile de import aplicabile către pachetul local și păstrați bazele căilor relative. Versionați acele documente împreună, astfel încât un nou WSDL rădăcină să nu folosească tipuri învechite.

Nu atingeți identificatorii de spațiu de nume. Pot arăta ca niște URL-uri, dar identifică vocabularul schemei în loc să spună încărcătorului de unde să ia un fișier. Înlocuirea lor poate schimba contractul serviciului.

Retestați construirea cu starea cache-ului înregistrată: definițiile din cache pot ascunde o dependență lipsă pe o mașină. Suprascrierea URL-ului serviciului se aplică într-o etapă ulterioară, iar un __doRequest() personalizat gestionează schimbul SOAP; nu trebuie presupus că vreunul dintre ele rescrie sau interceptează toate descărcările de schemă în timpul construirii.

Articole similare