1

几个月前,我用 C 语言为 Arduino 微控制器构建了一个串行连接库。我在想,如果我可以为这个库编写一个 PHP 包装器,那该有多棒。

我编写了一个 PHP 扩展,其中只有一个名为“acm_get_door()”的函数,它应该返回 -1、0 或 1,具体取决于我的 Arduino 上某个引脚的状态。如果它返回 -1,则表示未设置连接。

因此,在加载自定义扩展并更改我的两个 php.ini 文件并重新启动其他所有内容后,我通过 CLI 运行了此测试:

$ php -r '回声 acm_get_door();'

它返回一个“1”。我很兴奋,所以我玩了一下电路,看看我能不能得到一个“0”。好吧,我做到了,我认为我的扩展程序运行良好。

然后我转到我的测试网络服务器(同一台计算机)中的一个 .php 文件并尝试运行该函数。我得到了一个'-1'的结果。扩展确实加载了,但我似乎无法启动与 Arduino 的连接。

我想知道这是否可能是关于访问某些文件的权限问题。该函数需要访问一个名为“/dev/ttyACM0”的文件,它可以在 CLI 版本中访问。我的 Apache Web 服务器可能没有访问该文件的权限,如果是这样,我将如何调整内容以便它访问?

感谢您的时间。

4

2 回答 2

1

可能该组有权读取/写入设备。

因此,请使用 查找设备的组所有者ls -l /dev/tty/ACM0。然后,使用以下命令将自己添加到组中:

sudo adduser <me> <the_group>

(其中me是您的用户名,the_group是设备组)

您可能需要注销/登录才能获得更改的组权限的效果。

于 2013-03-17T16:46:35.057 回答
0

好的,感谢 John Jesus,我只需要更改文件 /dev/ttyACM0 的权限。

它设置为 660,666 似乎可以工作(尽管这可能是个坏主意)。

于 2013-03-17T14:13:06.220 回答