我正在努力将微控制器与灯泡服务器连接起来。我试图在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');
?>
答案 0 :(得分:1)
还有一些其他功能,试试这个功能也许你得到你的答案。
exec(command, $output);
此函数接受一个命令,并为$ output分配一个数组,其中每个元素都是生成输出的一行。
答案 1 :(得分:1)
为什么不使用PHP的文件系统函数而不是使用shell_exec和echo?
file_put_contents('/dev/ttyUSB0', "1 \r");
答案 2 :(得分:0)
我遇到了类似的问题,从php调用
php > echo shell_exec("echo -e aaa\tbbb");
-e aaa bbb
请注意,该输出包含“-e”,而我预计' echo '命令会将 -e 解释为标志,并且不会将其发送到输出。
在做了一些调查后,我得出了以下结论:
答案 3 :(得分:0)
这是一个古老的问题,但如果其他人也遇到这个问题,那么它对我有用。
昨天晚上,我自己一直在乱搞这个问题。要使其正常工作,您需要使用的命令应该首先直接调用echo bin /bin/echo...
而不是echo
。
另外,请不要忘记使用单引号/bin/echo...
而不是双引号来避免PHP空字节检测错误(这部分是您正确完成的)。
答案 4 :(得分:0)
我遇到了与-e一起运行的类似问题,我试图从php更改密码
运行此功能
select num_mojud
from MyTable
order by case when num_mojud is 0 then 1 else 0 end, num_mojud
它说密码不匹配。检查回声我看到-e被包括作为回声的一部分所以我把它改为
exec("echo -e \"$pass\\n$pass\" | passwd $user");
然后它奏效了。