2011-02-08 7 views
2

申し訳ありません、エラー全体を投稿します。基本的に私は石鹸サーバー上で実行され、素晴らしい仕事を2つの機能があります。私は第3の関数 'getk'を追加しました。他のものより複雑なことはありません。 2つのパラメータを受け入れ、配列を返します。しかし、この関数のクライアント側を呼び出すと、次のエラーが発生します。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")); 

は、あなたたちは私が思う:)

+0

inbuilt ['SoapServer'](http://us2.php.net/manual/en/class.soapserver.php)クラスを使用している限り理論的にはうまくいくはずです。しかし、 'getk'関数定義に構文エラーがあります。 '$ ret_array = array( 'blah'、 'blah2'、 'blah3');' ... – ircmaxell

+0

これはそれほど遠くにはありません。重要ではない。笑、おかげで、愚かなエラー。 –

答えて

0

を助けることを願って、問題がです

$ret_array('blah', 'blah2', 'blah3'); 

インタプリタがこれを関数呼び出しとして解決しようとしましたが、変数を見つけることができません。$ret_array

+0

これまでのところ、それを得ることはできません。この時点では、関数の内容は重要ではないため、そこに入れています。笑、おかげで、愚かなエラー。 –

0

私は同じエラーがありました。深い調査の結果、Soap-serverの側に問題があるようです。 呼び出されたルーチン(この例ではgetk()関数)が致命的エラーを生成し、Soap-serverがSoap-clientによって解釈される適切な応答を与えないという結果になりました。 誰かが同じエラーを持っている場合は、できる限りSoap-serverのエラーログを確認してください。あなたは、たぶん、呼び出される関数が致命的なエラーを生成し、 "したがって" xmlを返さないことがわかります。

関連する問題