Eine lokale service.wsdl kann SoapClient weiterhin dazu bringen, beim Aufbau entfernte Dokumente abzurufen. Die erste Datei lokal zu machen, beseitigt nur diesen ersten Download:

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

Beginnen Sie beim ersten fehlgeschlagenen Abruf, vor dem ersten geschäftlichen SOAP-Aufruf. Listen Sie jeden WSDL-Import und jede Schema-Location auf, einschließlich der Dokumente, auf die diese wiederum verweisen. Behalten Sie die Basis-URL bzw. den Pfad, mit der jede relative Referenz aufgelöst wird. Trennen Sie interne Hosts von Ressourcen, die tatsächlich den externen Proxy brauchen.

Ein expliziter SoapClient-Proxy kann ein internes Schema über einen Vermittler mit anderer DNS-Sicht oder anderer Zugriffsrichtlinie schicken. Eine Prozessvariable no_proxy belegt nicht, dass dieser Ladepfad sie liest. Verwenden Sie die für Ihre PHP-Version dokumentierten Optionen; eine Option nach einer Umgebungsvariable zu benennen, erzeugt keinen Selektor pro Import.

Um Definitionen vollständig lokal bereitzustellen, beschaffen Sie die freigegebenen Versionen des gesamten Abhängigkeitssatzes, aktualisieren Sie die betreffenden Importorte auf das lokale Bündel und bewahren Sie deren relative Pfadbasen. Versionieren Sie diese Dokumente gemeinsam, damit eine neue Wurzel-WSDL keine veralteten Typen verwendet.

Lassen Sie Namespace-Bezeichner unangetastet. Sie sehen vielleicht wie URLs aus, benennen aber das Schema-Vokabular, statt dem Loader zu sagen, woher er eine Datei holen soll. Ihr Ersetzen kann den Dienstvertrag ändern.

Testen Sie den Aufbau erneut mit festgehaltenem Cache-Zustand: zwischengespeicherte Definitionen können eine fehlende Abhängigkeit auf einem Rechner verbergen. Eine Service-URL-Überschreibung greift in einer späteren Phase, und ein eigenes __doRequest() wickelt den SOAP-Austausch ab; von keinem der beiden ist anzunehmen, dass es alle Schema-Downloads zur Konstruktionszeit umschreibt oder abfängt.

Ähnliche Artikel