@juju1

Как перезагрузить Apache из php?

Как мягко перезагрузить Apache2 из php?
нашел решение которое сработало у кого то как пишут но у меня оно не работает

<?php exec('apachectl -k graceful'); ?>

  1. PHP работает не из под root.
  2. Но скрипт выше тестировал из под рут, не сработал.
  3. Хочу также найти способ как перезагрузить его из php передавая пароль.
  4. Либо создать .sh (ни разу не делал) скрипт на сервере который можно запустить из php без пароля. Если можно.
  5. Либо любой другой правильный на ваш взгляд способ.



Уважаемые, очень благодарен буду за правильное направление и помощь в этом не легком вопросе.
  • Вопрос задан
  • 1343 просмотра
Решения вопроса 2
svd71
@svd71
Присоединяюсь к нонсенсу Arhimed96 - как рубить сук на котором сидишь?
Но все возможно. Одно из многих решение: Для этого небходимо написать шелловский скрипт с перезагрузкой и задать на него разрешение на запуск с sudo для пользователя www-data в файле /etc/sudoer . Наберите в поисковике apache www-data sudoer
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
Можно написать скриптик, который будет перезапускать apache, и дать нанего разрешение для юзера, от которого запущен apache в sudoers

Можно написать скриптик, который будет ребутить и поставить ему SUID аттрибут и владельца root, он тогда будет запускаться с привилегиями нужного пользователя.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@slavabars
Веб программист
Если php работает не под рутом - ни как.
Вариант - делаем слушатель и запускаем его от рута, а ему уже даем команды на ребут.

Самый постой костыль - пишем sh с циклом и сном в раз 5 сек, который проверяет файл /tmp/apache_reboot на 1.
Если в файле 0 - засыпаем на 5 сек, если 1 - делаем ребут и меняем 1 на 0.
Ответ написан
@Arhimed96
Ответ будет нелепым, как и сам вопрос, но можно слушать какой-то порт через sh-скрипт(запущенный от рута), при обращении к которому с паролем - апач перезагрузится.
Ответ написан
Ваш ответ на вопрос

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

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