PHP SOAP Процедура 'functionName' отсутствует

Я пишу приложение SOAP в Symfony, и для всего моего запроса у меня появляется ошибка. Procedure 'getClusterName' not present .

Странно то, что когда я создаю тестовое SOAP-приложение в чистом PHP, он отлично работает, но тот же код в Symfony возвращает ошибку.

Еще одна странная вещь: когда в коде сервера SOAP я перечисляю доступные служебные функции с помощью $server->getFunctions() , он возвращает массив сервисных функций, а getClusterName – в этом массиве. Таким образом, функция известна серверу, но она не может ее вызывать.

При написании службы в Symfony я следил за этой статьей и вот мой код:

Клиент :

 namespace Prj\SoapBundle\Controller; class SoapController extends Controller { public function indexAction() { $client = new \SoapClient('http://localhost/test.wsdl'); $client->getClusterName(); 

Сервер :

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

Сервис :

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

* .wsdl-файл кажется правильным, потому что он связывает вызов с контроллером и отлично работает с ванильным сервисом PHP.

В Интернете эта ошибка обычно объясняется кэшированным wsdl, но это обрабатывается здесь в коде сервера, устанавливая параметр soap.wsdl_cache_enabled равным нулю.

Даже если параметр soap.wsdl_cache_enabled = 0 , попробуйте также soap.wsdl_cache_enabled = 0 папку /tmp .

Для меня работала очистка папки tmp файлов wfd-prefixed. Я также изменил параметр wsdl_cache_enabled PHP на 0, как это было предложено в моей среде dev.