2013-03-17 5 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 нет разрешений на доступ к этому файлу, и если да, то как я смогу настроить материал так, чтобы он это делал?

Спасибо за ваше время.

+1

Что говорит 'ls -l/dev/tty/ACM0'? –

+0

Просто попробуйте это прямо сейчас. Это игра меня: crw-rw ---- – Benjamin

ответ

1

Возможно, у группы есть разрешения на чтение/запись устройства.

Поэтому узнайте владельца группы устройства с помощью ls -l /dev/tty/ACM0. Затем добавить себя в группу с помощью:

sudo adduser <me> <the_group> 

(где меня ваше имя пользователя и the_group является группа устройства)

Вам может понадобиться выйти/в, чтобы получить эффект измененных групповых разрешений.

+0

Спасибо за ваш ответ. Я обязательно попробую это в следующий раз. – Benjamin

0

Хорошо, благодаря Джону Иисусу, мне просто нужно было изменить разрешения файла/dev/ttyACM0.

Было установлено, что 660, 666, похоже, работает (хотя это, вероятно, плохая идея).

+0

Что такое владелец группы '/ dev/tty/ACM0'? Можете ли вы опубликовать весь вывод команды? –

+0

Вы можете добавить себя в ту же группу вместо изменения разрешений (см. Мой ответ). –

+0

@John, выход: crw-rw ---- 1 root dial 166, 0 17 марта 15:39 ttyACM0 == он сбрасывается каждый раз, когда я отключу Arduino. – Benjamin

Смежные вопросы