PHP-SOAP-Prozedur 'functionName' nicht vorhanden
Schreibe ich ein SOAP-Anwendung in Symfony und für all meine Anfrage ich bin immer ein Fehler Procedure 'getClusterName' not present
.
Merkwürdige ist, dass wenn ich eine test-SOAP-Anwendung in reines PHP, es funktioniert gut, aber den gleichen code in Symfony gibt einen Fehler zurück.
Andere seltsame Sache ist, dass, wenn der SOAP-server code habe ich eine Liste der verfügbaren service-Funktionen mit $server->getFunctions()
es gibt array mit den service-Funktionen und getClusterName
ist in diesem array. Also die Funktion ist bekannt auf dem server, aber kann es es nicht nennen.
Beim schreiben der service in Symfony ich folgte dieser Artikel und hier ist mein code:
Client:
namespace Prj\SoapBundle\Controller;
class SoapController extends Controller
{
public function indexAction()
{
$client = new \SoapClient('http://localhost/test.wsdl');
$client->getClusterName();
Server:
namespace Prj\SoapBundle\Controller;
class SoapController extends Controller
{
public function indexAction()
{
ini_set("soap.wsdl_cache_enabled", "0");
$server = new \SoapServer($this->container->getParameter('wsdl'));
$server->setClass('SoapBundle\HelloService');
$server->handle();
Service:
namespace Prj\SoapBundle;
class HelloService
{
public function getClusterName()
{
return '<?xml version="1.0" encoding="utf-8"?><root>Hello!</root>';
}
}
*.wsdl-Datei scheint korrekt zu sein, denn es bindet den Aufruf mit controller und arbeitet gut mit Vanille PHP-Dienst.
Im Internet dieser Fehler in der Regel erklärt sich durch zwischengespeicherte wsdl -, aber das hier gehandhabt wird im server-code durch festlegen soap.wsdl_cache_enabled
parameter auf null.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Selbst wenn die Einstellung
soap.wsdl_cache_enabled = 0
, versuchen auch die Entleerung des/tmp
Ordner.Löschen der tmp-Ordner mit wsdl - Präfix Dateien, die für mich gearbeitet. Ich habe auch die PHP wsdl_cache_enabled option auf 0, wie vorgeschlagen, in meiner dev-Umgebung.