Перезапуск демонов через веб-интерфейс

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

sudo service mysqld restart

Однако она не будет работать: веб-серверу запрещено выполнение административных команд. Теперь давайте исправим эту ситуацию через файл /etc/sudoers. Для его редактирования нужно использовать команду sudo visudo. Нужно добавить следующую строку:

apache          ALL=(ALL)       NOPASSWD: /sbin/service

Таким способом пользователь apache, под которым работает веб-сервер, будет иметь возможность запускать sudo service без ввода пароля.

Теперь разместим этот код в своем PHP-скрипте:

$command = 'sudo service mysqld restart 2>&1; echo exit code: "$?"';
$resp = shell_exec($command);

После этого получим ошибку:

sudo: sorry, you must have a tty to run sudo
exit code: 1

Которая исправляется в том же файле. sudo visudo, затем:

# эта строчка уже есть:
Defaults    requiretty
# вносим такую опцию:
Defaults:apache !requiretty

Теперь должно работать без ошибок.

Если в скрипте подключена база MySQL, будет обрыв соединения. Перезапуск демона состоится, но скрипт может завершиться с ошибкой.
Печать/экспорт