【问题标题】:How to call ejabberdctl from PHP (Apache)如何从 PHP (Apache) 调用 ejabberdctl
【发布时间】:2011-01-24 15:03:06
【问题描述】:

我正在尝试从 PHP 调用 ejabberdctl,但我不断收到错误代码 3(与节点 ejabberd@localhost:nodedown 的 RPC 连接失败)。

我的 PHP 脚本包含以下添加好友的代码:

exec('sudo /opt/ejabberd-2.1.2/bin/ejabberdctl add_rosteritem adil.baig40122310029739 godudu.com chburaska0822431111022397 godudu.com chburaska0822431111022397 Friends both', $output, $retCode);

exec('sudo /opt/ejabberd-2.1.2/bin/ejabberdctl add_rosteritem chburaska0822431111022397 godudu.com adil.baig40122310029739 godudu.com adil.baig40122310029739 Friends both', $output, $retCode);

我还像这样将 ejabberdctl 添加到 /etc/sudoers :

# Custom entry for ejabberdctl, so it can be used via PHP
www-data ALL= NOPASSWD: /opt/ejabberd-2.1.2/bin/ejabberdctl

我还将 ejabberd bin 目录添加到 /etc/environment,如下所示:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/ejabberd-2.1.2/bin"
source /etc/environment

每次我运行 PHP 脚本 $retCode(exec 返回码)返回 3,但如果我从命令行运行相同的 php 文件,它就可以工作。

救命!

【问题讨论】:

  • 更新:通过将 'exec' 替换为 'system' 我得到以下输出“与节点 ejabberd@localhost:nodedown 的 RPC 连接失败”虽然如果我运行“ejabberdctl status”它显示服务器是运行
  • 我可以在 ejabberd 日志中看到以下错误消息:“来自不允许的节点 'ejabberd-ctl@localhost' 的连接尝试”

标签: linux path ejabberd


【解决方案1】:

原来这是一个cookie(Erlang cookie)问题。答案见ejabberdctl does not work from PHP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2018-01-29
    • 2013-07-14
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多