Um service.wsdl local ainda pode fazer com que o SoapClient busque documentos remotos durante a construção. Tornar o primeiro arquivo local remove apenas esse primeiro download:

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

Comece pela primeira busca que falhou, antes da primeira chamada de negócio SOAP. Liste cada importação WSDL e cada schema location, incluindo os documentos a que eles, por sua vez, fazem referência. Mantenha a URL base ou o caminho usado para resolver cada referência relativa. Separe hosts internos dos recursos que realmente precisam do proxy externo.

Um proxy do SoapClient explícito pode enviar um schema interno por um intermediário com uma visão de DNS ou uma política de acesso diferentes. Uma variável no_proxy no nível do processo não comprova que este caminho de carregamento a leia. Use as opções documentadas para a sua versão do PHP; nomear uma opção com o nome de uma variável de ambiente não cria um seletor por importação.

Para implantar as definições inteiramente no local, obtenha as versões aprovadas de todo o conjunto de dependências, atualize os locais de importação aplicáveis para o pacote local e preserve as bases de caminhos relativos deles. Versione esses documentos em conjunto para que um novo WSDL raiz não use tipos obsoletos.

Não mexa nos identificadores de namespace. Eles podem parecer URLs, mas identificam o vocabulário do schema em vez de dizer ao carregador de onde obter um arquivo. Substituí-los pode alterar o contrato do serviço.

Teste a construção novamente com o estado do cache registrado: definições em cache podem esconder uma dependência ausente em uma máquina. A substituição da URL do serviço se aplica a uma etapa posterior, e um __doRequest() personalizado cuida da troca SOAP; não se deve presumir que qualquer um dos dois reescreva ou intercepte todos os downloads de schema no momento da construção.

Artigos relacionados