我发现堆栈中的代码跟随在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>';
}
?>`
请帮助我!
感谢
答案 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)的服务!