Bug #47584 [Com]: WSDL error in soapClient causes Fatal Error

From: Date: Tue, 22 Dec 2015 16:53:34 +0000
Subject: Bug #47584 [Com]: WSDL error in soapClient causes Fatal Error
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-198149@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=47584&edit=1 ID: 47584 Comment by: jpenn at tmwsystems dot com Reported by: gem at rellim dot com Summary: WSDL error in soapClient causes Fatal Error Status: Not a bug Type: Bug Package: SOAP related Operating System: Linux PHP Version: 5.2.9 Assigned To: dmitry Block user comment: N Private report: N New Comment: This is a bug in PHP 7.0.0 VC14 X64 with Apache 2.4.17 (Win64) VC14 I am NOT running Xdebug. Occurs on Windows 7 Professional (my development environment). class MaddSoapClient extends SoapClient { public function __construct($wsdl, $options = null) { // Created some code to make sure the wsdl is valid $isValid = true; if($isValid) { try { if($options != null) @parent::SoapClient($wsdl, $options); else @parent::SoapClient($wsdl); } catch(SoapFault $sf) { // log SF } catch(Exception $e) { // log Exception } } } } $msc = new MaddSoapClient("http://qasynergize.tmwsystems.com/SynWebService/Explorer.asmx?wsdl", array("exceptions" => true, 'connection_timeout' => 0, 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP)); The above error handler hacks don't work. Email me for any settings information you like. PHP 5.6.16 VC11 X64 throws an out of memory error but still works with the above code. PHP 5.4.45 works regardless. Previous Comments: ------------------------------------------------------------------------ [2014-06-03 11:12:24] stefan at mailinator dot com This is an issue with Xdebug, we also had this in PHP 5.3.10 http://bugs.xdebug.org/view.php?id=249 ------------------------------------------------------------------------ [2012-10-03 09:36:52] james dot silver at computerminds dot co dot uk The above solution(s) worked for me on an Ubuntu server, but not on IIS. My final solution added in a custom error handler which did the trick - e.g: <?php if (function_exists('xdebug_disable')) { xdebug_disable(); } set_error_handler('my_custom_soap_wsdl_error_handler'); new SoapClient('http://google.com', array('exceptions' => TRUE)); restore_error_handler(); if (function_exists('xdebug_enable')) { xdebug_enable(); } function my_custom_soap_wsdl_error_handler($errno, $errstr, $errfile = NULL, $errline = NULL, $errcontext = NULL) { // Simulate the exception that Soap *should* have thrown instead of an error. // This is needed to support certain IIS server setups it would seem. $wsdl_url = isset($errcontext['wsdl']) ? $errcontext['wsdl'] : ''; $msg = "SOAP-ERROR: Parsing WSDL: Couldn't load from '" . $wsdl_url . "' : failed to load external entity \"" . $wsdl_url . "\""; if (class_exists('SoapFault')) { $e = new SoapFault('WSDL', $msg); } else { $e = new Exception($msg, 0); } throw $e; } ?> ------------------------------------------------------------------------ [2012-01-26 08:40:50] zpon dot dk at gmail dot com I had to surround my SoapClient call with xdebug_disable(); and xdebug_enable(); (@ was not enough) to work around this problem. ------------------------------------------------------------------------ [2010-09-02 21:10:09] gem at rellim dot com I was a confirmed bug in earlier versions. So it should be 'Fixed' not "Bogus'. ------------------------------------------------------------------------ [2010-09-02 19:37:13] rasmus@php.net Right, so this is not a PHP bug. Perhaps a feature request to downgrade that particular error to a Warning instead of a catchable fatal, but that is all I see. ------------------------------------------------------------------------ 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 https://bugs.php.net/bug.php?id=47584 -- Edit this bug report at https://bugs.php.net/bug.php?id=47584&edit=1

« previous php.bugs (#198149) next »