php shell_exec echo
我正在研究微控制器与lamp服务器的接口。我试图在php中使用shell_exec运行命令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'); ?> 还有其他一些函数,试试这个函数,也
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选项