Я использую Archlinux и хочу запустить следующий скрипт (последняя строка на самом деле):
<?php
var_dump(get_current_user());
var_dump(exec("whoami"));
var_dump(exec("sudo echo 1 > /sys/class/gpio/gpio44/value"));
Сценарий имеет следующие разрешения (я пробовал с и без sudo в последней строке)
-rwxr-xr-x 1 http http 126 Nov 17 17:24 turn_on.php
а также http
был добавлен в \etc\sudoers
с ВСЕ разрешений
http ALL=(ALL) ALL
Результат открытия turn_on.php
скрипт в браузере это:
string(4) "http" string(4) "http" string(0) ""
Сценарий не делает то, что должен (последняя строка) и в журнале apache, каждый раз, когда я перезагружаю браузер, я получаю:
sh: /sys/class/gpio/gpio44/value: Permission denied
Это мой первый тест, посвященный тому, что я хочу сделать, я думаю сделать что-то более «PHP-стиль веб-службы API». Любое предложение высоко ценится.
Cheers.-
Вам необходимо проверить разрешения / sys / class / gpio / gpio44 / value, так как именно это вызывает ошибку разрешений.
Также попробуйте использовать sudo из командной строки для имитации функциональности скрипта:
sudo -u http echo 1 > /sys/class/gpio/gpio44/value
Если это не удается, вам просто нужно повозиться с вашими разрешениями, пока они не будут работать правильно, а затем повторите попытку из браузера.
Если вышеперечисленное работает, но в браузере все равно происходит сбой, вероятно, выполнение вашего скрипта на самом деле не использует пользователя http.
Других решений пока нет …