shell_exec返回空字符串

时间:2011-06-24 13:19:06

标签: php shell-exec

当我使用shell_exec在PHP中执行我的命令时,它总是返回一个空字符串。我试过shell_exec('ls -l');并且它有效。我把命令作为一个单独的文件,但仍然是相同的结果。

$shellOutput = shell_exec("pacmd list-sinks | grep 'volume: 0:' | tail -1 | awk '{ print $3 }'");

//return execute status;
echo trim($shellOutput); 

4 个答案:

答案 0 :(得分:1)

大部分时间PHP脚本都是由Apache运行的,如果你的脚本就是这种情况,那么Apache用户可能没有足够的权限来运行这个命令。先检查一下。如果它作为CLI脚本运行,那么检查PHP用户是否可以运行该脚本。

答案 1 :(得分:1)

我改变了sudoers 所有全部=(全部):NOPASSWD ALL(非常不安全,但只是为了找到确定有用的东西),

然后我做了一个

sudo -u myusername /path/to/script.sh

其中script.sh 具有 export VAR = value export VAR = value

对于所有必要的环境变量(你可以从能够正确看待你需要的用户那里做一个printenv。可能是一个好的HOME,也许是一个XAUTHORITY)。

希望有所帮助

答案 2 :(得分:0)

也许这就是为什么

尝试使用system

答案 3 :(得分:0)

您可能希望在命令末尾尝试“> file.txt 2>&1”。它将输出重定向到一个单独的文件。

$command = "cmd command > outputs.txt 2>&1";
shell_execute($command);

您最终将得到一个看起来像这样的文件:

b'cmd command output contents\r\n'