几个月前,我在C中为Arduino Micro-controller构建了一个串行连接库。我在考虑如果能为库编写PHP包装器会有多棒。
我用一个名为“acm_get_door()”的函数编写了一个PHP扩展,它应该返回-1,0或1,具体取决于我的Arduino上某个引脚的状态。如果它返回-1,则表示未设置连接。
因此,在加载自定义扩展并更改我的两个php.ini文件并重新启动其他所有内容后,我通过CLI运行此测试:
$ php -r'echo acm_get_door();'
它返回'1'。我很兴奋,所以我玩电路看我是否能得到'0'。好吧,我做了,我认为我的扩展工作完美。
然后我在我的测试网络服务器(同一台计算机)中找到了一个.php文件并尝试运行该功能。我得到了一个“-1”的结果。扩展程序确实加载了,但我似乎无法启动与Arduino的连接。
我想知道它是否可能是访问某些文件的权限。该函数需要访问一个名为“/ dev / ttyACM0”的文件,它可以在CLI版本中访问。我的Apache Web服务器可能没有访问该文件的权限,如果是这样,我怎么能调整它的内容呢?
感谢您的时间。
答案 0 :(得分:1)
该组可能具有读取/写入设备的权限。
因此,请使用ls -l /dev/tty/ACM0
查找设备的群组所有者。然后,使用以下方法将自己添加到组中:
sudo adduser <me> <the_group>
(我是您的用户名, the_group 是设备的组)
您可能需要注销/以获得更改的组权限的效果。
答案 1 :(得分:0)
好的,感谢John Jesus,我只需要更改文件/ dev / ttyACM0的权限。
设置为660,666似乎有效(虽然它可能是一个坏主意)。