【发布时间】:2011-06-24 13:19:06
【问题描述】:
当我在 PHP 中使用 shell_exec 执行命令时,它总是返回一个空字符串。我试过shell_exec('ls -l'); 并且它有效。我把命令作为一个单独的文件,结果还是一样。
$shellOutput = shell_exec("pacmd list-sinks | grep 'volume: 0:' | tail -1 | awk '{ print $3 }'");
//return execute status;
echo trim($shellOutput);
【问题讨论】:
-
如手册中提到的
exec()返回执行命令输出的最后一行。您确定您的命令会产生任何输出,还是最后不会输出空行? -
嗯,这是我在命令行中执行时没有空行。 risto@risto-desktop:/var/www/PulseAudioVolumeControl$ ./volume 24%
-
试试
shell_exec("which pacmd")看看你的程序是否包含在PHP使用的$PATH中 -
在
pacmd list-sinks之后添加2>&1或查看error.log 中的消息。这是最常见的命令未找到。 -
你的意思是这个 $shellOutput = ("pacmd list-sinks 2>&1 | grep 'volume: 0:' | tail -1 | awk '{ print $3 }'");并且此命令没有错误,我厌倦了执行 ll 命令,然后在 error.log 中列出了错误,但在 pacmd 上没有错误。 sh: ll: 未找到
标签: php shell-exec