3

当我在 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); 
4

4 回答 4

2

我将 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)。

希望有帮助

于 2011-11-30T03:03:05.567 回答
1

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

于 2011-06-24T13:41:25.417 回答
1

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

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

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

b'cmd command output contents\r\n'
于 2019-06-06T03:31:27.870 回答
0

也许这就是为什么

尝试使用系统

于 2011-06-24T13:33:48.360 回答