Fehlermeldung XAMPP SOAPServer mit XDebug "error fetching headers"

Kitro

Grünschnabel
Hallo Leute

Wie muss ich xDebug korrekt einrichten, damit ich auch einen eigenen SoapServer in meinem XAMPP Entwicklungssystem fehlerfrei debuggen kann?

Umgebung:
- XAMPP V3.2.2 (alles in den letzten 3 Wochen runtergeladen)
-- mit Soap und xDebug
-- php 5.6
- Netbeans IDE 8.0.2
- Win7 x64

Problem:
Habe xDebug und Soap soweit ich das in einigen Tutorials lesen konnte eingerichtet. Kann damit auch meine Webseite debuggen.
Zudem habe ich einen einfachen Webservice geschrieben, der ohne Debugging auch funktioniert.
Wenn ich xDebug verwende sehe ich wie auf der Webseite der SoapClient instanziert wird. Sobald ich aber an die Stelle komme, bei der eine Funktion des Webservices aufgerufen wird, passiert erstmal ca 60 Sekunden nichts. Dann fängt mein try catch das Ergebnis der Funktion ab und die Webseite ist fertig geladen und zeigt an, dass es vom Webservice ein "Error fetching headers" gegeben hat. Danach taucht erst der Webservice im Debugger auf und ich kann die Funktion debuggen, leider hilft das nicht viel, da die Webseite schon mit Fehlermeldung geladen ist.
Durch abschalten von "keep_alive" =0 funktionierte kurzzeitig das Debugging so wie es soll, dann aber später nach einem Neustart des XAMPP, ging wieder nichts... Irgendwie scheint alles eingerichtet zu sein, aber das Debugging funktioniert nicht stabil. Als es richtig funktionierte, lieferte der Aufruf der WS Funktion sofort ein Ergebnis, oder es dauerte auch wieder eine Zeit, aber sprang dann in den WS zum debuggen zuerst hinein.

Hat jemand noch nen Tipp, was falsch sein könnte?

SoapServer:
PHP:
$ws = "http://localhost/mysite/public_html/tools/mytool/webservice/myws.php?wsdl";
        $server = new \SoapServer($ws);
        $server->setClass("myws"); //alle enthaltenen methoden werden extrahiert
        $server->setPersistence(SOAP_PERSISTENCE_REQUEST); 
        $server->handle();

//später kommt hier die funktion
public function  myfunc()
{
...
return TRUE;
}


SoapWSDL:
Code:
...
<soap-env:address location="http://localhost/mysite/public_html/tools/mytool/webservice/myws.php?XDEBUG_SESSION_START=netbeans-xdebug"/>
...


SoapClient/Webseite:
PHP:
$ws = "http://" . logic\helper\Server::htmlpathAbsolut('webservice/myws.php') . '?wsdl';          
$vLocation = "http://" . logic\helper\Server::htmlpathAbsolut('webservice/myws.php');            
$client = new \SoapClient($ws, ["location" => $vLocation, "trace" => 1, "exceptions" => 1, "keep_alive" => 0, "cache_wsdl" => \WSDL_CACHE_NONE, "connection_timeout" => 10]); 
$client->__setCookie('XDEBUG_SESSION', 'netbeans-xdebug');  //Ohne diese Zeile wird der webService nie debuggt, aber die Funktion liefert sofort das passende ergebnis des WS

...
if ($client->myfunc() === TRUE)
{
...
}

PHP.ini
CSS:
[soap]
soap.wsdl_cache_enabled=0
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit=5

[XDebug]
zend_extension = "C:\Tools\xampp\php\ext\php_xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.profiler_output_dir = "C:\Tools\xampp\apache\logs\"
xdebug.trace_output_dir = "C:\usr\xampp\apache\logs\"
xdebug.remote_enable = 1
xdebug.remote_autostart=0
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000
xdebug.remote_mode = "req"
xdebug.idekey=netbeans-xdebug
xdebug.auto_trace = 0
xdebug.max_nesting_level = 100
 
Zurück