PHP exec returns 对某些使用 sudo 的命令正确执行,对其他命令则不正确

PHP exec returns correctly for some commands using sudo, not others

当我在 PHP 脚本中发出以下命令时,我得到了成功的输出:

$peers_summary = exec('sudo asterisk -x "sip show peers"', $sip_peers);

$sip_peers 包含 exec 命令的完整输出,以 Asterisk 提供的标准 table 格式列出对等点。但是,当我发出:

$test = exec('sudo asterisk -x "sip show peer trunk-to-pbx"', $trunk);

$trunk 完全为空:array(0) {},并且 $test 是一个空字符串:string(0) ""

trunk-to-pbx 在我的 Asterisk 安装中是一个有效的节点,我已经验证在提示符下发出 sudo asterisk -x "sip show peer trunk-to-pbx" 是成功的(sudo asterisk -x "sip show peers" 也是如此),所以我不确定为什么第二个命令 returns 从 exec() 中清空。我最初认为这可能是输出字符限制,但输出少于 2,000 个字符 - 不可能是内存或限制问题。我尝试了 set_time_limit(0),尽管在提示时执行几乎是即时的。

为什么第二个 exec() 返回空?

问题不在于 exec()asterisk 或我传递给 exec() 的命令;有一个将命令列入白名单的 sudoers 文件,我的命令需要在 exec() 起作用之前包含在内。继承的代码库。感谢 Chris Stryczynski 提出的建议。