获取shell命令的输出-交互式PHP和PHP-CLI之间的奇数差异?

获取shell命令的输出-交互式PHP和PHP-CLI之间的奇数差异?,php,command-line-interface,Php,Command Line Interface,我有一个长时间运行的PHP脚本,它运行在Raspberry Pi上,通过以下命令定期检查CPU温度: exec('/bin/cat /sys/class/thermal/thermal_zone0/temp')/1000 这个很好用 我还想通过解析top命令的输出来捕获CPU负载,如下所示: exec('/usr/bin/top -n 1 -p 0', $output, $code) 奇怪的是,只有当我以交互方式运行PHP脚本时,它才起作用。当脚本在PHP-CLI(从sudo crontab

我有一个长时间运行的PHP脚本,它运行在Raspberry Pi上,通过以下命令定期检查CPU温度:

exec('/bin/cat /sys/class/thermal/thermal_zone0/temp')/1000
这个很好用

我还想通过解析top命令的输出来捕获CPU负载,如下所示:

exec('/usr/bin/top -n 1 -p 0', $output, $code)
奇怪的是,只有当我以交互方式运行PHP脚本时,它才起作用。当脚本在PHP-CLI(从sudo crontab开始)下执行时,它不会运行,而cat命令在这两种模式下都运行。返回的$code值为1,这似乎表明进程无法运行或不会运行


为什么会有这种差异?我如何获得top的输出以便分析它?

调用
var\u dump($output)
为您提供了执行
top
失败的原因的有用信息?如果没有,请使用
proc_open()
执行命令并从应用程序读取
STDERR
流。您还可以考虑将<代码> STDRR StdOut并以这种方式读取。不,$输出只是一个空数组。我尝试了proc_open,但以下代码不起作用,因此没有真正的帮助: