2010-03-10 4 views
1

저는 모든 신입 회원을 위해 XMPP 계정을 만들어야하는 PHP 소셜 네트워크에서 일하고 있습니다. mod_admin_extra로 작동하는 Ejabberd 서버가 정상적으로 작동합니다.PHP에서 ejabberdctl 호출하기

그래서 같은 PHP 파일에서 ejabberdctl를 호출하는 것을 시도하고있다 :

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

그러나 나는 다음과 같은 오류가 발생합니다 : 명령 줄에서 같은 명령이 작동하지만

Failed RPC connection to the node [email protected]: nodedown 

.

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

그래서 어떻게 제공 :

은 또한은/etc /의 sudoers에 다음을 추가 한?

답변

0

사용자와 함께 ejabberd를 시작한 다음 다른 사용자를 사용하여 다시 시작하면이 문제가 발생하기 때문에 PHP를 통해 명령을 실행하는 사용자와 관련이 있습니다.

0

sudo를 사용하지 말고 ejabberd 쿠키를 www 사용자에게 복사하고 ejabberdctl을 직접 호출하십시오.

또한 mod_xmlrpc를 살펴보면 XMLRPC 인터페이스를 통해 ejabberdctl 명령을 실행할 수 있습니다.

1

Ejabberd은 특별 계정을 가지고, 내 PHP는 간부의 호출로 시작하면 그것은 나를 위해 잘 작동입니다 :

SU - ejabberd -c "ejabberd 명령 ..."

(암호없이 .. . 흠)

2

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