sh — выполнить команду Openwrt UCI через переполнение стека

Я разрабатываю простой (очень простой) интерфейс для openwrt с использованием PHP. Для этого мне нужно вызвать многие команды openwrt UCI (Unified conf. Interface) через функции PHP shell_exec () или system (). Все команды UCI, которые я пробовал в терминале, работают отлично. Но как только я запускаю их через вышеуказанные функции, они просто не работают.

В качестве примера я запускаю следующие две команды, которые хорошо работали в терминале

uci set wireless.@wifi-iface[0].ssid=test
uci commit

Но как только я запускаю их через PHP, ничего не происходит. Они просто не работают. Я создаю .sh файл, сохраняю две строки и запускаю эти файлы, используя PHP, но снова !! результаты одинаковы. Но когда я запускаю .sh файл через терминал, он работает !!

Для тестирования я установил разрешение для обоих файлов на 777. Но это не помогает. Существуют ли какие-либо дополнительные требования для запуска команд оболочки через PHP, такие как root-доступ к PHP или Apache? Я новичок в этом, и я был бы благодарен, если кто-то может помочь

мой apache error_log

[Wed Aug 19 08:26:53 2015] [error] [client 192.168.2.117] uci
[Wed Aug 19 08:26:53 2015] [error] [client 192.168.2.117] :
[Wed Aug 19 08:26:53 2015] [error] [client 192.168.2.117] I/O error
[Wed Aug 19 08:26:53 2015] [error] [client 192.168.2.117]

Я использую apache в качестве веб-сервера и openwrt Chaos Calmer 15.05-rc3 в качестве своей базовой прошивки поверх Raspberry pi 2

0

Решение

Мне удалось решить мою проблему с помощью веб-сервера Uhttpd вместо Apache. У Apache почему-то недостаточно прав для непосредственного выполнения команд UCI. Uhttpd веб-сервер по умолчанию в openwrt может выполнять эти команды напрямую

0

Другие решения

Я попытался выяснить ту же проблему, и мой вывод пока что — запустить php с правами root. Я знаю, что это небезопасно, но, по крайней мере, это работает. Вот одна линия от /etc/init.d/php5-fpm запустить php-fpm с правами root:

service_start $PROG -R -y $CONFIG -g $SERVICE_PID_FILE


Флаг ключа здесь:
-R, — разрешено запускать от имени пользователя
Разрешить запуск пула от имени root (по умолчанию отключено)

0

По вопросам рекламы [email protected]