View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001629 | Xdebug | Uncategorized | public | 2019-02-11 09:41 | 2019-02-15 15:11 |
| Reporter | Nikolay_Z | Assigned To | |||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Platform | * | OS | * | OS Version | 7 |
| Product Version | 2.7.0rc1 | ||||
| Target Version | 2.7.0 | Fixed in Version | 2.7.0RC2 | ||
| Summary | 0001629: SOAP Client/Server detection code does not handle inherited classes | ||||
| Description | |||||
| Steps To Reproduce | <?php $client = new SoapAgent('test'); Expected result:var_dump() of the Throwable object. Actual result:Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'test' : failed to load external entity "test" Process finished with exit code 255 | ||||
| Additional Information | If XDebug is disabled in php.ini - soap client work as expected | ||||
| Tags | No tags attached. | ||||
| Operating System | Windows | ||||
| PHP Version | 7.3.0-7.3.1 | ||||
|
|
This is specifically related to just SOAP classes. The soap extension overloads the PHP error handler to be able to throw exceptions, and as Xdebug uses it's own overloaded PHP error handler, this conflicts. This is why Xdebug tries to detect whether a SoapClient or SoapServer is a class in the error, and restores the original error handler (SOAP's). However, Xdebug does not deal with when an inherited class of SoapClient/SoapServer is used. |
|
|
I have a working patch, and running tests now to see if this breaks nothing else. |
|
|
Fixed in GIT — thanks for the report! |
|
|
Thank you! |