Перезапуск демонов через веб-интерфейс
Допустим, мы хотим перезапустить 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
exit code: 1
Которая исправляется в том же файле. sudo visudo
, затем:
# эта строчка уже есть: Defaults requiretty # вносим такую опцию: Defaults:apache !requiretty
Теперь должно работать без ошибок.
Если в скрипте подключена база MySQL, будет обрыв соединения. Перезапуск демона состоится, но скрипт может завершиться с ошибкой.