View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000609 | Xdebug | Uncategorized | public | 2010-08-18 13:30 | 2011-11-11 23:50 |
| Reporter | dalexandre | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | closed | Resolution | fixed | ||
| Product Version | 2.0.0dev | ||||
| Summary | 0000609: Xdebug messe up with fatal to exception error conversions with PHP SoapClient | ||||
| Description | With Xdebug enabled, SoapClient doesn't anymore send catchable Exception when an invalid WSDL is provided (webservice can be down, that's a real world case). <?php Will return uncatchable Fatal Error : PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'some-wrong.wsdl' : failed to load external entity "some-wrong.wsdl" ... Uncomment the xdebug_disable() line and the error is catched. | ||||
| Additional Information | This bug seems to be linked to http://bugs.xdebug.org/view.php?id=249 | ||||
| Tags | No tags attached. | ||||
| Operating System | Ubuntu Linux | ||||
| PHP Version | 5.3.2 | ||||
|
|
You're using an outdated version of Xdebug, please try 2.1.0 first. This bug is listed as fixed in 2.1.0beta1. |
|
|
I have this problem Xdebug v2.1.0 / PHP 5.3.2-1ubuntu4.2 |
|
|
The test case given by dalexandre is still valid, see below: [tvl@iron ~/Desktop] [tvl@iron ~/Desktop] [tvl@iron ~/Desktop] So, with xdebug enabled, the error is not caught by the try/catch anymore. |
|
|
I can't update the bug report, but as tvlooy mention it, I think it could be interessting to mention that i'm using dotdeb repository (php5-xdebug_5.3.3-0.dotdeb.1_i386.deb). |
|
|
This is still broken, also in 2.1.1 I even believe this isn't a 'minor' issue, because this just means that the 'exceptions' option is broken. Using exceptions really forces you to add a xdebug_disable() call... |
|
|
This is still broken in 2.1.2. |
|
|
Hi, I confirm this bug still exists in last version because the fix made in past couldn't solve the problem at my sense. Couldn't get a SOAPACTION header in client mode. In my patch I doesn't include treatment for the SoapServer type error because first patch in xdebug.c is supposed at least to solve that part. But normally if we want to centralize detection, possible to add a strstr on "SoapServer::Soap" I guess. |
|
|
I attached new version of the patch to make it more stable and covering all cases, still ugly though but seems to works well... I've to say also that this patch will make stack trace overload in error message available only in exception mode of the soap client, if you decide to raise a fatal error, then no xdebug stack trace. |
|
|
Hi, I had a little time to work more on it so I got a 3rd version of the patch that is, this time I believe, clean :) It's more evolved as it checks if last stack entry is a class with name SoapClient or SoapServer, also it'll check if soap php extension is in used, that should proof that it is the native SoapClient or SoapServer provided by php and not some user defined class in PHP language. It's still missing a little something to make it perfect though, it could be nice to find a way to check current soap configuration context to know if the user is asked soap extension to raise an exception or just a php error... For now I not yet figured out a clean way to do it. |
|
|
derick, do you know if there is a way to use the object store in executor_global->current_execute_data ? |
|
|
I've implemented in a slightly different way, but it should work. Please test the code on github (either master, or xdebug_2_1). |