gpt4 book ai didi

PHP SOAP 过程 'functionName' 不存在

转载 作者:可可西里 更新时间:2023-11-01 12:30:58 24 4
gpt4 key购买 nike

我正在 Symfony 中编写一个 SOAP 应用程序,对于我的所有请求,我收到一个错误 Procedure 'getClusterName' not present

奇怪的是,当我用纯 PHP 创建一个测试 SOAP 应用程序时,它工作正常,但在 Symfony 中相同的代码返回错误。

另一个奇怪的事情是,当我在 SOAP 服务器代码中使用 $server->getFunctions() 列出可用的服务函数时,它返回服务函数的数组和 getClusterName 在那个数组中。所以服务器知道该函数,但它不能调用它。

在 Symfony 中编写服务时,我遵循了 this article这是我的代码:

客户:

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 文件似乎是正确的,因为它将调用与 Controller 绑定(bind)并且可以很好地与 vanilla PHP 服务一起工作。

在 Internet 上,这个错误通常是由缓存的 wsdl 解释的,但这在服务器代码中通过将 soap.wsdl_cache_enabled 参数设置为零来处理。

最佳答案

即使设置 soap.wsdl_cache_enabled = 0,也请尝试清空 /tmp 文件夹。

关于PHP SOAP 过程 'functionName' 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11679288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com