Страница 1 из 1

Как организовать выполнение системных команд из PHP

Добавлено: 2010-02-27 10:16:07
terminus
Мне надо будет написать веб админку для управления демоном DNS. Необходимо будет выполнять из админки некоторые системные команды управления демоном (перечитать конфиг, рестарт демону и т.д.). Как правильно добиться этого - как дать Apache/PHP возможность выполнять системные команды для которых нужны полномочия root? Первое, что пришло в голову - поставить в систему sudo и через него настроить доступ к нужной команде для пользователя www из-под которого работает апача.

Код: Выделить всё

# ps auxw | grep http
root      1327  0,0  1,9 30432 19416  ??  Ss    8:48     0:00,80 /usr/local/sbin/httpd -DNOHTTPACCEPT
www       1390  0,0  0,8 12540  8372  ??  I     8:48     0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www       1391  0,0  1,9 30432 19436  ??  I     8:49     0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www       1392  0,0  1,9 30432 19436  ??  I     8:49     0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www       1393  0,0  1,9 30432 19436  ??  I     8:49     0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www       1394  0,0  1,9 30432 19436  ??  I     8:49     0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www       1395  0,0  1,9 30432 19436  ??  I     8:49     0:00,00 /usr/local/sbin/httpd -DNOHTTPACCEPT
:-o :unknown:

Re: Как организовать выполнение системных команд из PHP

Добавлено: 2010-02-27 13:04:02
Alex Keda
писать команды в файл, файл по крону раз в минуту читать и команды выполнять

Re: Как организовать выполнение системных команд из PHP

Добавлено: 2010-02-27 15:48:48
ADRE
а что тема типа system() не работает? exec() да и есть много интересных функций подбных никсовым, типа: symlink() и др...
кроме определенного пользователя от рута их не кто не запустит, да и через судно можешь управлять )

Re: Как организовать выполнение системных команд из PHP

Добавлено: 2010-03-04 11:36:54
ProFTP
ну или демона написать и ему передавать...
на сокетах например

вообще-то многие рекомендуют sudo c system/exec