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 提出的建议。
当我在 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 提出的建议。