Исключение Uncaught SoapFault: функция [Client] не является допустимым методом для этой службы - PullRequest
8 голосов
/ 02 декабря 2011

Когда я пытаюсь получить доступ к функции в wsdl с некоторыми данными (используя мыльный клиент в php), я получаю следующую ошибку.

Uncaught SoapFault exception: [Client] Function function_nameis not a valid method for this service

Любая помощь?

Ответы [ 5 ]

25 голосов
/ 29 февраля 2012

Если вы хотите выполнить функцию, которую SOAP не может найти - возможно, PHP кэшировал файл wsdl.

Добавить это:

ini_set("soap.wsdl_cache_enabled", "0");

для отключения кеширования.

2 голосов
/ 21 июня 2012

Два возможных решения:

  1. попытаться выяснить, действительно ли существует функция с фрагментом кода: Запрос PHP SoapClient: недопустимый метод для этой службы
  2. Кроме того, после того, как вы отобразили список доступных вызовов функций, позаботьтесь о том, чтобы, если ваш WSDL генерировался сервером Java SOAP, у вас могло быть несколько функций с именем «service» (или с тем же именем).Только первый из них будет распознаваться и использоваться клиентом PHP SOAP.Вам нужно вручную переименовать все свои в WSDL!
0 голосов
/ 26 октября 2016

В нашей ситуации это исключение произошло при обновлении с PHP5.6 до PHP7. У нас отключение кеша WSDL тоже сработало.

ini_set("soap.wsdl_cache_enabled", "0");

Также см .: http://lornajane.net/posts/2015/soapfault-when-switching-php-versions

0 голосов
/ 24 мая 2015

У меня возникла эта проблема, и я наконец решил проверить мой журнал ошибок php.

В php.ini включить always_populate_raw_post_data = -1 и перезапустить сервер.*

Моя версия PHP 5.6.8

0 голосов
/ 30 октября 2014

Просто добавьте Параметры, Тип возврата и Метод веб-сервиса в комментариях вверху функции. Это будет работать. Я попробовал его работать.

/**
 * @param string the symbol of the stock
 * @return float the stock price
 * @soap
 */
public function getPrice($symbol)
{
    //...return stock price for $symbol
}
...