Momentan arbeite ich an einer Schnittstelle zwischen PHP und C++. Genauer gesagt geht es um einen C++ Clienten und einen in PHP geschriebenen Server.
Wie so üblich werden erstmal ein paar Testversionen geschrieben, um die Kommunikation zwischen dem Clienten und dem Server zu testen.
Die erste Funktion sollte nur 2 Zahlen addieren und das Ergebnis zurückgeben.
Die Server.php wurde um eine einfache Test-Funktion (sayHallo) erweitert.
Auch in der Wsdl Datei wurde diese neue Funktion beschrieben.
Der Client konnte zwar problemlos die Zahlen addieren, beim Aufruf der Funktion “sayHallo” kam die Fehlermeldung
Procedure “sayHallo” is not present.
Eine nicht allzu aussagende Fehlermeldung.
Lag es an der server.php, an der wsdl oder am Clienten?
Um es kurz zu machen, es lag am Soap wsdl Cache.
Wer an einem Webservice arbeitet, muss den Cache deaktivieren.
So geht es:
ini_set("soap.wsdl_cache_enabled", "0");
Die Server.php sieht mit ausgeschalteten Cache so aus:
<?php function add($a, $b) { return $a + $b; } function sayHallo($name) { return 'Hallo ' . $name; } ini_set("soap.wsdl_cache_enabled", "0"); $server = new SoapServer("test.wsdl"); $server->addFunction("add"); $server->addFunction("sayHallo"); $server->handle(); ?>
Vielleicht hilft es den einen oder anderen bei der Suche nach der ominösen Fehlermeldung
Man kann da sehr viel Zeit verplempern^^.
Februar 17th, 2010
Brainstorm
Posted in
Tags:
Danke für die Hilfe … das war auch mein Problem … hatte nur bei dem Client den Cache ausgeschaltet
Hallo … vielen Dank für diesen Betrag … nach 2 Tagen verzweifelter Suche endlich die Lösung !
Markus