php shell_exec echo

php shell_exec echo,php,echo,shell-exec,Php,Echo,Shell Exec,我正在研究微控制器与lamp服务器的接口。我试图在php中使用shell_exec运行命令echo-e-n“data\r”>/dev/ttyUSB0,但没有结果。从命令行可以很好地工作。做了一点实验,我发现echo-e-n“1\r”实际上是回声-e-n 1。有没有理由不选择-e或-n选项? 这是我的密码: <?php shell_exec('echo -e -n "1 \r" > /dev/ttyUSB0'); ?> 还有其他一些函数,试试这个函数,也

我正在研究微控制器与lamp服务器的接口。我试图在php中使用shell_exec运行命令
echo-e-n“data\r”>/dev/ttyUSB0
,但没有结果。从命令行可以很好地工作。做了一点实验,我发现
echo-e-n“1\r”
实际上是回声
-e-n 1
。有没有理由不选择-e或-n选项? 这是我的密码:

    <?php
    shell_exec('echo -e -n "1 \r" > /dev/ttyUSB0');
    ?>

还有其他一些函数,试试这个函数,也许你会得到答案

exec(command, $output);

此函数接受一个命令并为$output分配一个数组,其中每个元素都是生成的输出的一行。

为什么不使用PHP的文件系统函数,而不是使用shell_exec和echo

file_put_contents('/dev/ttyUSB0', "1 \r");

我遇到了类似的问题,从php调用

php > echo shell_exec("echo -e aaa\tbbb");
-e aaa bbb
请注意,该输出包含“-e”,而我预期“echo”命令会将-e解释为标志,不会将其发送到输出

经过调查,我得出以下结论:

  • 当从php调用exec或shell_exec时,将启动新的shell解释器。
    • php启动“sh
    • 当我在CentOS上运行时,sh是bash的一个符号链接,exec(“echo…”)按我的预期工作
    • 现在我正在运行Ubuntush是短跑的符号链接,而不是bash
    • 最后一个根本原因是,破折号中的内置echo命令没有/understand'-e'标志,所以它只是将其转发到输出

这是一个老问题,但它涉及到什么对我有用,以防其他人也遇到这个问题

昨天晚上我自己也在胡闹和挣扎。为此,您需要使用的命令应该首先直接调用echo bin
/bin/echo…
,而不是仅调用
echo


另外,不要忘记使用单引号
/bin/echo…
而不是双引号来避免PHP空字节检测错误(这部分您做得很正确)。

我在运行-e时遇到了类似的问题,我试图从PHP更改密码

运行这个没有用

exec("echo -e \"$pass\\n$pass\" | passwd $user");
上面说密码不匹配。检查回音我看到-e是回音的一部分,所以我把它改成了

exec("echo \"$pass\\n$pass\" | passwd $user");

然后它就成功了。

为什么不使用PHP文件函数呢?我没有想到这一点。你能举个例子吗?我试过这个,但仍然得到相同的-e-n1。我需要echo使用-e和-n选项