如何从php注册ejabberd用户?

时间:2013-02-12 13:34:30

标签: php linux ubuntu ejabberd

我发现堆栈中的代码跟随在php中使用ejabberd xmpp聊天服务器执行register命令。 (Create ejabberd user from PHP

我还在ubuntu linux server 12.0的“/ etc / sudoers”文件中添加“www-data ALL = NOPASSWD:/ usr / sbin / ejabberdctl”行

但是当我执行文件时出现错误:

“read_passphrase:无法打开/ dev / tty:没有这样的设备或地址 主机密钥验证失败。“

我正在使用的PHP代码如下:

`<?php
$username = 'tester';
$password = 'testerspassword';
$node = 'myserver.com';
exec('sudo /usr/sbin/ejabberdctl register '.$username.' '.$node.' '.$password.' 2>&1',$output,$status);
if($output == 0)
{
    // Success!
}
else
{
    // Failure, $output has the details
    echo '<pre>';
    foreach($output as $o)
    {
        echo $o."\n";
    }
    echo '</pre>';
}
?>`

请帮助我!

感谢

2 个答案:

答案 0 :(得分:0)

您好以下代码对我有用..

只需更改上面代码中的一行

即可

exec('sudo -u ejabberd ejabberdctl register '.$username.' '.$node.' '.$password.' 2>&1',$output,$status);

答案 1 :(得分:0)

sudo -u ejabberd 部分表示命令应在拥有您的 ejabberd 进程的用户内执行。通常这应该是一个非特权用户,但也许您的用户被称为不同的用户,或者您甚至可能使用 root。在后一种情况下,命令应该是:

exec('sudo -u root ejabberdctl register '.$username.' '.$node.' '.$password.' 2>&1',$output,$status);

请注意,出于安全原因,不应以 root 身份运行可访问外部网络(例如 Internet)的服务!