1

私は、すべての新しいメンバーに対して XMPP アカウントを作成する必要がある php ソーシャル ネットワークに取り組んでいます。mod_admin_extra で動作する Ejabberd サーバーがすべて正常に動作しています。

次のようにphpファイルからejabberdctlを呼び出そうとしています:

exec('sudo /home/user/ejabberd-2.1.2/bin/ejabberdctl register test server pass 2>&1');

しかし、私は次のエラーが発生します:

Failed RPC connection to the node ejabberd@localhost: nodedown

同じコマンドがコマンドラインから機能しますが。

また、以下を /etc/sudoers に追加しました:

www-data ALL= NOPASSWD: /home/webuser/ejabberd-2.1.2/bin/ejabberdctl

それで、何が得られますか?

4

4 に答える 4

2

純粋な PHP SSH 実装である phpseclibを使用すると、よりうまくいくかもしれません。

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('localhost', 22);
$ssh->login('username', 'password');

$ssh->read('[prompt]');
$ssh->write("su - user\n");
$ssh->read('Password:');
$ssh->write("Password\n");
echo $ssh->read('[prompt]');
?>
于 2011-04-22T21:50:13.313 に答える
1

Ejabberdには特別なアカウントがあり、php execの呼び出しが次のように始まる場合は問題なく動作します:

su --ejabberd-c"ejabberdコマンド..."

(パスワードなし...うーん)

于 2011-03-08T21:00:57.747 に答える
0

これは、あるユーザーでejabberdを起動し、別のユーザーを使用して再起動した場合に発生することがあります。そのため、phpを介してコマンドを実行しているユーザーと関係があるのではないでしょうか。

于 2010-04-22T01:04:44.763 に答える
0

sudoの使用を避け、ejabberd cookieをwwwユーザーにコピーして、ejabberdctlを直接呼び出します。

また、XMLRPCインターフェースを介してejabberdctlコマンドを実行できるようにするmod_xmlrpcを調べることもできます。

于 2010-08-23T10:18:26.573 に答える