2013-03-01 4 views
0

У меня возникли проблемы с получением файла для выполнения без ввода sudo перед этим. Я думаю, что проблема в том, что библиотеки, которые я использовал, требуют, чтобы вы были суперпользователем.не может выполнить программу без использования sudo

Я работаю над программой для Raspberry Pi и до сих пор все отлично поработало. Программа принимает аргумент командной строки и выводит ее на отдельный ЖК-дисплей 2x16. Поэтому, если я ввожу следующую команду в качестве корня или место sudo перед ней, программа функционирует по назначению: ./serialTest Hello World.

То, что я работаю сейчас получает значение текстового поля на PHP веб-страницы и ее представления в программе в качестве аргумента командной строки с помощью функции exec() в PHP Проблема в том, что я не в состоянии выполнить это, потому что если я не root Я попытался exec("sudo ./serialTest" . $textBox);, но он все еще говорит мне Permission Denied

После дальнейшего чтения в библиотеки я использую я кулачок по инструкции о том, как выполнить функцию serialOpen без использования sudo или быть root я добавил пользователь pi и www-data группе dialout У меня есть veri это с id piid www-data. Программа по-прежнему говорит Permission denied. Есть ли что-то, что я мог бы смотреть дальше, или я делаю что-то неправильно? Я включил отрывок из страницы, что государства, как запустить его без использования sudo или быть root

You can use it without sudo if you add yourself into the dialout group. either edit /etc/group, or use the usermod command. (and logout/login again) 
-Gordon 
+0

вы перезапустить Apache после внесения изменений в группах? –

+0

Да, я перезапустил Pi – Yamaha32088

+0

десять. Я предлагаю использовать 'strace', чтобы получить захват того, что происходит в фоновом режиме. например 'exec ('strace ./serialtest')'. strace будет выводить стек syscall для всего, что делает приложение. в какой-то момент вы увидите, откуда исходит разрешение. –

ответ

1

Это зависит от прав сервера, предоставляемые службой серверов провайдера. Если вы являетесь сервис-провайдером, отредактируйте права доступа к оболочке для выполнения команды Exec в файле конфигурации PHP. По умолчанию Exec не предусмотрен по умолчанию, именно поэтому сообщение приходит

Если вы не сервис-провайдера, то связаться с ними делать вещи ..