로컬 WSDL도 SoapClient를 네트워크로 내보낼 수 있다
로컬 서비스 정의가 내부와 외부 proxy 경로를 함께 쓰는 경우 전이적 WSDL 및 XML Schema import를 추적하십시오.
로컬 service.wsdl 파일도 생성 중에 SoapClient가 원격 문서를 가져오게 할 수 있습니다. 첫 파일을 로컬로 만드는 것은 그 첫 다운로드만 없앨 뿐입니다:
local service.wsdl
→ internal Common.xsd
→ external Types.xsd
→ another schema location
첫 SOAP 업무 호출 전에, 처음 실패한 가져오기부터 시작하십시오. 각 WSDL import와 각 schema location을, 그것들이 다시 참조하는 문서까지 포함해 나열하십시오. 각 상대 참조를 해석하는 데 쓰이는 기준 URL이나 경로를 기록해 두십시오. 내부 호스트와 실제로 외부 proxy가 필요한 리소스를 구분하십시오.
명시적인 SoapClient proxy는 DNS 뷰나 접근 정책이 다른 중개자를 통해 내부 schema를 보낼 수 있습니다. 프로세스 수준의 no_proxy 변수는 이 로딩 경로가 그것을 읽는다는 것을 증명하지 않습니다. 사용 중인 PHP 버전에 문서화된 옵션을 쓰십시오. 옵션 이름을 환경 변수에 붙인다고 해서 import별 선택자가 생기지는 않습니다.
정의를 완전히 로컬로 배포하려면 의존성 집합 전체의 승인된 버전을 확보하고, 해당 import 위치를 로컬 번들로 갱신하고, 상대 경로 기준을 유지하십시오. 새 루트 WSDL이 오래된 타입을 쓰지 않도록 그 문서들을 함께 버전 관리하십시오.
namespace 식별자는 건드리지 마십시오. URL처럼 보일 수 있지만 그것은 schema 어휘를 식별할 뿐, 로더에게 파일을 어디서 가져올지 알려주지 않습니다. 그것을 바꾸면 서비스 계약이 달라질 수 있습니다.
캐시 상태를 기록한 채 생성 과정을 다시 테스트하십시오. 캐시된 정의는 한 머신에서 빠진 의존성을 숨길 수 있습니다. 서비스 URL 재정의는 이후 단계에 적용되고, 사용자 정의 __doRequest()는 SOAP 교환을 처리합니다. 둘 중 어느 것도 생성 시점의 모든 schema 다운로드를 다시 쓰거나 가로챈다고 가정해서는 안 됩니다.