對不起發佈整個錯誤。基本上我有兩個在肥皂服務器上運行的功能,並且工作得很好。我已經添加了第三個函數'getk',它不會使其他函數更復雜。接受兩個參數並返回一個數組。但是,當調用這個函數客戶端時,我得到以下錯誤。PHP SOAP函數名稱必須是一個字符串?
Fatal error: Uncaught SoapFault exception:
[SOAP-ENV:Server] Function name must be a string in /home/od2u/public_html/wp-content/plugins/link-monitor/link-monitor.php:33
Stack trace: #0 [internal function]: SoapClient->__call('getk', Array)
#1 /home/od2u/public_html/wp-content/plugins/link-monitor/link-monitor.php(33): SoapClient->getk('3', 'wpmu1')
#2 /home/od2u/public_html/wp-content/themes/twentyten/header.php(18): wsfKeywords('3', 'wpmu1')
#3 /home/od2u/public_html/wp-includes/theme.php(1086): require_once('/home/od2u/publ...')
#4 /home/od2u/public_html/wp-includes/theme.php(1062): load_template('/home/od2u/publ...', true)
#5 /home/od2u/public_html/wp-includes/general-template.php(34): locate_template(Array, true)
#6 /home/od2u/public_html/wp-content/themes/twentyten/index.php(16): get_header()
#7 /home/od2u/public_html/wp-includes/template-loader.php(43): include('/home/od2u/publ...')
#8 /home/od2u/public_html/wp-blog-header.php(16): require_once('/home/od2u/publ...')
#9 /home/od2u/public_html/index.php(17): require(in /home/od2u/public_html/wp-content/plugins/link-monitor/link-monitor.php on line 33
我已到處尋找如何對此進行排序的建議。函數確實存在,它不像美元符號或使用錯誤類型的括號那樣愚蠢。
我也清除和禁用了WSDL服務器和客戶端的緩存。
客戶端調用:
$c->getk($site, $server);
$ c是SOAP客戶端和getk是函數名稱。
功能服務器端:
function getk($website, $server)
{
$ret_array('blah', 'blah2', 'blah3');
return $ret_array;
}
,這是使用添加到SOAP服務器:
$server->addFunction(array("getk", "getLinks", "getDirectLinks"));
希望你們能幫助:)
從理論上講,只要你使用內建的``SoapServer`](http://us2.php.net/manual/en/class.soapserver.php)類,就應該可以正常工作。但是你的`getk`函數定義中有一個語法錯誤。它應該是`$ ret_array = array('blah','blah2','blah3');`... – ircmaxell 2011-02-08 16:30:45
它沒有得到那麼遠,我只是把它放在那裏,因爲此時函數的內容是不重要的。雖然大聲笑,愚蠢的錯誤。 – 2011-02-08 16:38:06