Welcome! Log In Create A New Profile

Advanced

[PHP] severity of SOAP-ERROR: Parsing WSDL: Couldn't load from

Posted by Jan Vávra 
Hello,
 I've written a test function that tests availability of a soap service.
If the service is not available, eg http 404 is returned, I get on php
7.1. 12, x64 win, ErrorException.
The're two problems:
1. If xdebug used, FATAL ERROR is thrown. There must be done a
workaround, see
https://bugs.php.net/bug.php?id=47584, [2012-10-03 09:36 UTC] james dot
silver at computerminds dot co dot uk

Wouldn't be reasonable to decrease the severity to a normal Exception ?
If you'd like to download a page from a url, the curl also returns
error, not a php fatal error.

2. If you catch \Throwable $ex, the value of error_clear_last() remains
still filled in with ErrorException("SOAP-ERROR Parsing WSDL ...")
I must explicitly clear it by
error_clear_last();

Shouldn't be the caught ErrorException implicitly cleared in catch block ?
We're using Nette Tracy and in its shutdown handler the error_get_last()
is inspected and Tracy shows the same error as was caught.

Here is a stub of method how to call safely a ws without worrying about
the script will be terminated unexpectedly:

 try
  {
      // @see https://bugs.php.net/bug.php?id=47584, [2012-10-03 09:36
UTC] james dot silver at computerminds dot co dot uk
      if (function_exists('xdebug_disable'))
      {
        xdebug_disable();
      }

      $ws = new SoapClient(.);
      $response = $ws->CheckVersion(.);
    }
    catch (\Throwable $ex)
    {
      //downgrade the severity to exception
      error_clear_last();
      throw new \Exception($ex->getMessage(), $ex->getCode());
    }
    finally
    {
      if (function_exists('xdebug_enable')) {
        xdebug_enable();
      }
  }

Jan.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Sorry, only registered users may post in this forum.

Click here to login