ERROR
php
network
ai_generated
true
SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://api.example.com/service?wsdl' : failed to load external entity
ID: php/soap-client-error
82%Fix Rate
85%Confidence
40Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 83 | active | — | — | — |
Root Cause
SOAP client errors typically occur when PHP cannot load or parse the WSDL file. Common causes include network connectivity issues, SSL certificate problems, WSDL URL changes, or the remote service being temporarily unavailable.
genericWorkarounds
-
90% success Cache the WSDL file locally and reference it by file path
Download the WSDL: curl -o /var/www/app/wsdl/service.wsdl 'https://api.example.com/service?wsdl'. Reference locally: new SoapClient('/var/www/app/wsdl/service.wsdl', ['cache_wsdl' => WSDL_CACHE_BOTH]). Update the cached file periodically. -
85% success Configure SOAP client with proper SSL and timeout options
Pass a stream_context with SSL options: $ctx = stream_context_create(['ssl' => ['verify_peer' => true, 'cafile' => '/etc/ssl/certs/ca-certificates.crt'], 'http' => ['timeout' => 30]]); new SoapClient($wsdl, ['stream_context' => $ctx, 'connection_timeout' => 15]).
Dead Ends
Common approaches that don't work:
-
Disabling WSDL caching to always fetch the latest WSDL
65% fail
Disabling WSDL caching (soap.wsdl_cache_enabled = 0) means every SOAP call requires downloading and parsing the WSDL first. This doubles the request time and makes the application dependent on the WSDL endpoint availability for every single call.
-
Parsing the WSDL XML manually to extract endpoint URLs
78% fail
Manually parsing WSDL bypasses the SOAP protocol's type system, message format validation, and operation binding. The resulting HTTP calls will lack proper SOAP envelope formatting and namespace handling.
Error Chain
Leads to:
Preceded by:
Frequently confused with: