【发布时间】:2021-06-19 19:05:20
【问题描述】:
我想找到 MySQL 的正确路径。但是,此命令的输出为空。根据 PHP 的 exec() 命令手册,该命令应该捕获 shell 命令的输出。
<?php
$cmd = "which mysql 2>&1;";
print($cmd."<br>");
exec($cmd, $output, $retval);
var_dump($output);
print("<br>");
var_dump($retval);
?>
输出:
which mysql 2>&1;
array(0) { }
int(1)
命令行输出:
$ which mysql 2>&1;
/usr/local/mysql/bin/mysql
为什么命令出错?为什么变量不包含错误的输出,因为命令指定了2>&1?
【问题讨论】:
-
“发生了什么”是什么意思? php.net/manual/en/function.exec.php 和 php.net/manual/en/function.shell-exec.php 几乎涵盖了这一点。 shell_exec 根本不捕获输出,并且 exec 不捕获输出除非你告诉它。所以...只需阅读文档并更新您的代码以使用您需要的函数,并使用正确的参数?
-
从 PATH 开始迭代的意义何在?这就是 shell 已经在做的事情了。更好。
-
如果网络服务器 PATH 不包含
/usr/local/we/love/obtuse/nested/paths/,那么这就是您的配置问题。 -
我已经修改了代码和问题,以便您能够更好地理解。
标签: php system shell-exec php-7.4