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