当我在 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);
当我在 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);
我将 sudoers 更改为 ALL ALL = (ALL) :NOPASSWD ALL (非常不安全,但只是为了找到可以工作的东西),
然后我做了一个
sudo -u myusername /path/to/script.sh
其中 script.sh 有 export VAR=value export VAR=value
对于所有必要的环境变量(您可以从可以正确 pacmd 的用户那里执行 printenv 以查看您需要的内容。可能是一个好的 HOME,也可能是 XAUTHORITY)。
希望有帮助
大多数时候 php 脚本是由 Apache 运行的,如果你的脚本就是这种情况,那么 Apache 用户可能没有足够的权限来运行这个命令。先检查一下。如果它作为 CLI 脚本运行,则检查 PHP 用户是否可以运行该脚本。
您可能想在命令末尾尝试“ > file.txt 2>&1”。它将输出重定向到一个单独的文件。
$command = "cmd command > outputs.txt 2>&1";
shell_execute($command);
你最终会得到一个看起来像这样的文件:
b'cmd command output contents\r\n'
也许这就是为什么
尝试使用系统