2012-07-26 14 views
7

Estoy escribiendo una aplicación SOAP en Symfony y, a pesar de mi solicitud, recibo un error Procedure 'getClusterName' not present.PHP SOAP El procedimiento 'functionName' no está presente

Lo extraño es que cuando creo una aplicación SOAP de prueba en PHP puro, funciona bien, pero el mismo código en Symfony devuelve un error.

Otra cosa extraña es que cuando en el código del servidor SOAP enumero las funciones de servicio disponibles con $server->getFunctions(), devuelve una matriz de las funciones de servicio y getClusterName está en esa matriz. Entonces, el servidor conoce la función, pero no puede llamarla.

Al escribir el servicio en Symfony Seguí this article y aquí está mi código:

cliente:

namespace Prj\SoapBundle\Controller; 

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

servidor:

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

Servicio:

namespace Prj\SoapBundle; 

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

* .wsdl el archivo parece ser correcto porque enlaza la llamada con el controlador y funciona bien con el servicio vainilla de PHP.

En Internet, este error generalmente se explica por wsdl almacenado en caché, pero esto se maneja aquí en el código del servidor estableciendo el parámetro soap.wsdl_cache_enabled en cero.

Respuesta

11

Incluso si establece soap.wsdl_cache_enabled = 0, intente también vaciar la carpeta /tmp.

3

Borrando la carpeta tmp de archivos con prefijo wsdl funcionó para mí. También cambié la opción wsdl_cache_enabled de PHP a 0 como se sugiere en mi entorno de desarrollo.

Cuestiones relacionadas