如何从php注册ejabberd用户?

如何从php注册ejabberd用户?,php,linux,ubuntu,ejabberd,Php,Linux,Ubuntu,Ejabberd,我从stack follow中找到了一段代码,用于使用php在ejabberd xmpp聊天服务器中执行register命令。() 我还在ubuntulinuxserver12.0的/etc/sudoers文件中添加了“www-data-ALL=NOPASSWD:/usr/sbin/ejabberdctl”行 但是当我执行文件时,我得到了一个错误: “读取密码:无法打开/dev/tty:没有这样的设备或地址 主机密钥验证失败。“ 我使用的php代码如下所示: `<?php $usernam

我从stack follow中找到了一段代码,用于使用php在ejabberd xmpp聊天服务器中执行register命令。()

我还在ubuntulinuxserver12.0的/etc/sudoers文件中添加了“www-data-ALL=NOPASSWD:/usr/sbin/ejabberdctl”行

但是当我执行文件时,我得到了一个错误:

“读取密码:无法打开/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>';
}
?>`
``
请帮帮我


谢谢

您好,以下代码适用于我

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

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

部分
sudo-u ejabberd
表示该命令应在拥有您的
ejabberd
进程的用户内部执行。通常,这应该是一个无特权的用户,但可能您的用户调用方式不同,或者您甚至可能使用root。在后一种情况下,命令应类似于:


请注意,由于安全原因,运行外部网络(如internet)可访问的服务不应以root用户身份运行

你好,mani我在我的ubnutu 14.04 LTS机器上使用了上述代码,但它给了我以下错误“sudo:未知用户:ejabberd”“sudo:无法初始化策略插件”
exec('sudo -u root ejabberdctl register '.$username.' '.$node.' '.$password.' 2>&1',$output,$status);