使用shell_exec()在php中运行命令时出现问题,表示命令不存在

时间:2019-11-28 20:11:38

标签: php

我对PHP还是很陌生,我需要获取命令“ iocage list -h”的输出,iocage是freeBSD的管理工具。使用代码:

$file = shell_exec('/usr/local/bin/iocage list');
echo $file;

如果我这样做,它什么也不输出:

$file = shell_exec('/usr/local/bin/iocage list 2>&1');
echo $file;

然后输出

Usage: iocage [OPTIONS] COMMAND [ARGS]... Try "iocage --help" for help. Error: No such command "list". 

这不正确,好像我运行命令“ / usr / local / bin / iocage list”一样,它按预期工作。我不明白为什么命令末尾有一个'2>&1',我在另一个问题的答案中看到了它。

有人知道如何进行这项工作吗?谢谢您的提前帮助。

1 个答案:

答案 0 :(得分:0)

关于您对df %>% mutate( y = case_when( x == last(x == "A") ~ "A", x == first(x == "B") ~ "B") ) #> # A tibble: 7 x 2 #> x y #> <chr> <chr> #> 1 <NA> <NA> #> 2 A <NA> #> 3 A <NA> #> 4 <NA> <NA> #> 5 <NA> <NA> #> 6 B <NA> #> 7 B <NA> 的问题,这是一个很好的解释:

In the shell, what does " 2>&1 " mean?

现在,关于为什么shell_exec无法正常工作,您必须确保Web用户具有适当的权限。 取自https://www.php.net/manual/en/function.shell-exec.php

  

对于那些试图在unix类型的平台上使用shell_exec并且似乎无法使其正常工作的人,请快速提醒一下。 PHP以系统上的Web用户身份执行(对于Apache,通常为www),因此您需要确保Web用户对您在shell_exec命令中尝试使用的任何文件或目录具有权限。否则,它似乎什么也没做。

希望这可以帮助您解决问题。