当我使用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);
答案 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'