Задать вопрос

Рестарт nginx из php – как?

Никак не могу добиться рестарта nginx из php (php под apache).

Пробовал shell_exec("sudo /etc/init.d/nginx reload"), предварительно добавив эту команду в /etc/sudoers, но sudo ничего не выполняет через shell_exec, через консоль же все ок.

Далее решил пойти методом cron + bash, с созданием файла .go_restart через php:
По крону запускаю скрипт, через консоль работает как нужно, при запуске через крон сам файл .go_restart удаляется, но nginx не перезапускается.
if [ -f <...>/.go_restart ];
then
rm -f <...>/.go_restart;
service nginx reload
fi

Что не так?
  • Вопрос задан
  • 2782 просмотра
Подписаться 3 Оценить 1 комментарий
Решения вопроса 1
@bitaz Автор вопроса
Решил проблему – отключил SElinux для apache, закомментировал #Defaults requiretty
в /etc/sudoers.
Всем спасибо.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@tattoor
Не секрет, зачем?
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Я не очень сильно в теме, но почему reload а не restart?

service nginx restart
Ответ написан
tho
@tho
Дело в том, что когда Вы выполняете команду sudo nginx reload система должна спросить пароль. А через shell_exec его никак не ввести.

Решается добавлением в sudoers примерно такой строчки:
user ALL=NOPASSWD: service nginx reload

user - пользователь от которого запускается php скрипт.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы