2013-03-17 126 views
1

幾個月前,我爲C語言構建了Arduino微控制器的串行連接庫。我在想如果我能爲這個庫編寫一個PHP包裝器,它會是多麼的棒。自定義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服務器可能沒有訪問該文件的權限,如果可以,我將如何調整內容以便它可以執行?

謝謝你的時間。

+1

'ls -l/dev/tty/ACM0'告訴你什麼? – 2013-03-17 13:55:38

+0

現在就試試吧。 It game me: crw-rw ---- – Benjamin 2013-03-17 14:09:52

回答

1

可能該組有權讀取/寫入設備。

因此,找出使用ls -l /dev/tty/ACM0設備的組所有者。然後,使用自己添加到組:

sudo adduser <me> <the_group> 

(其中是你的用戶名和the_group是該組的設備)

您可能需要註銷/中獲得改變了組權限的效果。

+0

感謝您的回覆。我一定會在下次嘗試。 – Benjamin 2013-03-17 19:42:46

0

好的,感謝John Jesus,我只好改變文件/ dev/ttyACM0的權限。

它被設置爲660,666似乎工作(雖然它可能是一個壞主意)。

+0

'/ dev/tty/ACM0'的組擁有者是什麼?你能發佈命令的整個輸出嗎? – 2013-03-17 16:43:46

+0

你可以將自己添加到同一組而不是更改權限(請參閱我的答案)。 – 2013-03-17 17:04:39

+0

@John,輸出結果是:crw-rw ---- 1 root dialout 166,0 Mar 17 15:39 ttyACM0 ==每次拔下Arduino時都會重置。 – Benjamin 2013-03-17 19:40:46