A local service.wsdl can still cause SoapClient to fetch remote documents during construction. Making the first file local removes only that first download:

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

Start at the first failing retrieval, before the first SOAP business call. List every WSDL import and schema location, including the documents they reference in turn. Keep the base URL or path used to resolve each relative reference. Separate internal hosts from resources that genuinely need the external proxy.

An explicit SoapClient proxy can send an internal schema through an intermediary with a different DNS view or access policy. A process-level no_proxy variable does not establish that this loading path reads it. Use the options documented for your PHP version; naming an option after an environment variable does not create a per-import selector.

To deploy definitions entirely locally, obtain the approved versions of the whole dependency set, update the applicable import locations to the local bundle and preserve their relative-path bases. Version those documents together so a new root WSDL does not use stale types.

Leave namespace identifiers alone. They may look like URLs, but they identify the schema vocabulary rather than telling the loader where to retrieve a file. Replacing them can change the service contract.

Retest construction with the cache state recorded: cached definitions can hide a missing dependency on one machine. A service URL override applies to a later stage, and a custom __doRequest() handles the SOAP exchange; neither should be assumed to rewrite or intercept all constructor-time schema downloads.

Mikanda mikatakata