ID: 34657 Comment by: jhendric at sierra-bravo dot com Reported By: gareth at wsys dot co dot uk Status: Open Bug Type: SOAP related Operating System: Windows, Linux PHP Version: 5.1.6 Assigned To: dmitry New Comment:
Similar problem here with PHP 5.1.6. try { $soap = new SoapClient('[...]', array('exceptions' => true)); // Note: Same results without or without exceptions => true } catch(Exception $e) { var_dump($e); } Results in: Warning: SoapClient::__construct([...]) [function.SoapClient---construct]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in [...] Warning: SoapClient::__construct() [function.SoapClient---construct]: I/O warning : failed to load external entity "..." in [...] Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from '[...]' in [...] Previous Comments: ------------------------------------------------------------------------ [2006-12-21 23:32:24] [EMAIL PROTECTED] I get 3 warning + a SoapFault exception when running Lukas' test case there. The output is: Warning: SoapClient::SoapClient(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/ek/projects/php_5_2/t on line 4 Warning: SoapClient::SoapClient(http://i_dont_exist.com/some.wsdl): failed to open stream: No such file or directory in /home/ek/projects/php_5_2/t on line 4 Warning: SoapClient::SoapClient(): I/O warning : failed to load external entity "http://i_dont_exist.com/some.wsdl" in /home/ek/projects/php_5_2/t on line 4 string(9) "SoapFault" NULL I think getting 3 warning and an exception for failing to load WSDL file is a bit excessive though :) ------------------------------------------------------------------------ [2006-12-19 14:10:44] [EMAIL PROTECTED] I can reproduce this error with php 5.1.4 and 5.2.0 on windows. And it seems Derick was also able to reproduce it on Linux. Using the following we get 3 warnings and a fatal error: <?php try { $client = new SoapClient('http://i_dont_exist.com/some.wsdl'); } catch (SoapFault $e) { var_dump(get_class($e)); } catch (Exception $e) { var_dump(get_class($e)); } var_dump($client); It really should not do anything but throw an exception, as this is what is defined to happen for fatal errors in constructors for all extensions. ------------------------------------------------------------------------ [2006-09-12 09:56:52] gareth at wsys dot co dot uk OK, the debug information shows that the Soap client class is now throwing an uncaught SoapFault exception (which causes the fatal error). with a try{ } catch(SoapFault $exception) I can continue the script. I've closed the bug. ------------------------------------------------------------------------ [2006-09-12 08:56:12] [EMAIL PROTECTED] I cannot reproduce the bug even with 5.1.4. Try "php -d log_errors=0 test.php". May be you are seeing log message and don't see "Error Caught" after it? ------------------------------------------------------------------------ [2006-09-11 07:50:34] gareth at wsys dot co dot uk I have tried to use set_error_handler(), but as you know it cannot catch fatal errors. Does anyone else have a workaround? ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/34657 -- Edit this bug report at http://bugs.php.net/?id=34657&edit=1