PHP ejabberdctl çağırıyor

4 Cevap php

Ben tüm yeni üyeler için XMPP hesapları oluşturmak için bize gerektiren bir php sosyal ağ üzerinde çalışıyorum. Ben mod_admin_extra bütün çalışma cezası çalıştıran bir çalışma ejabberd sunucu var.

Ben şöyle bir php dosyasından ejabberdctl aramak çalışıyorum:

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

ama aşağıdaki hatayı alıyorum:

Failed RPC connection to the node ejabberd@localhost: nodedown

Aynı komut komut satırından çalışıyor olsa.

Ayrıca / etc / sudoers için aşağıdaki ekledi:

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

Peki ne oluyor?

4 Cevap

Kullanarak daha iyi şans olabilir phpseclib, a pure PHP SSH implementation:

<?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]');
?>

Ejabberd özel bir hesabı var, ve benim php exec çağrı ile başlayan eğer bu benim için iyi çalışıyor bulunuyor:

su - ejabberd-c "ejabberd ... komutları"

(Hayır şifre ile ... hmm)

Eğer bir kullanıcı ile ejabberd başlamak ve daha sonra yeniden başka bir kullanıcı kullanıyorsanız, bu bazen olur, belki o php komutu çalışıyor kullanıcı ile ilgisi vardır?

, Sudo kullanarak önlemek için, www kullanıcıya ejabberd çerez üzerine kopyalayabilir ve doğrudan ejabberdctl diyoruz.

Ayrıca, size bir XMLRPC arabirimi üzerinden ejabberdctl komutları çalıştırmak için izin verecektir mod_xmlrpc içine bakmak isteyebilirsiniz.