PHP SOAP-Prozedur 'functionName' nicht vorhanden

Ich schreibe eine SOAP-Anwendung in Symfony und erhalte für alle meine Anfragen eine FehlermeldungProcedure 'getClusterName' not present.

Seltsamerweise funktioniert das Erstellen einer Test-SOAP-Anwendung in reinem PHP einwandfrei, aber derselbe Code in Symfony gibt einen Fehler zurück.

Eine andere seltsame Sache ist, dass ich im SOAP-Server-Code verfügbare Dienstfunktionen mit aufliste$server->getFunctions()Gibt ein Array der Servicefunktionen und zurückgetClusterName ist in diesem Array. Die Funktion ist dem Server also bekannt, kann sie aber nicht aufrufen.

Beim Schreiben des Dienstes in Symfony folgte ichDieser Beitrag Und hier ist mein Code:

Klient:

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();

Bedienung:

namespace Prj\SoapBundle;

class HelloService
{
    public function getClusterName() 
    {
        return '<?xml version="1.0" encoding="utf-8"?><root>Hello!</root>';
    }
}

Die * .wsdl-Datei scheint korrekt zu sein, da sie den Aufruf an den Controller bindet und mit dem Vanilla-PHP-Dienst einwandfrei funktioniert.

Im Internet wird dieser Fehler normalerweise durch zwischengespeichertes wsdl erklärt, dies wird jedoch hier im Servercode durch Einstellung behandeltsoap.wsdl_cache_enabled Parameter auf Null.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage