Как перезапустить Apache нажатием кнопки (веб)? - PullRequest
7 голосов
/ 25 августа 2011

Я играю с моей виртуальной машиной, и код, который я разрабатываю, требует, чтобы я перезапускал apache каждый раз, чтобы зафиксировать изменения.Я думал, что было бы неплохо просто иметь букмарклет, или ссылку или нажатие кнопки, чтобы я мог сделать это.Любые мысли о том, как сделать это с PHP на виртуальной машине CentOS 5 dev?

Ответы [ 3 ]

17 голосов
/ 26 августа 2011

Как сказал Марк Б, вам нужны права пользователя root, чтобы можно было перезапустить Apache.Лучший способ справиться с этим, ИМХО, - дать пользователю, работающему под Apache, перезапустить Apache с помощью команды sudo .

. Вы захотите отредактировать * 1006.* файл и добавьте строки, подобные следующим:

Cmnd_Alias      RESTART_APACHE = /sbin/service apache2 restart

www-data ALL=NOPASSWD: RESTART_APACHE

Вам может потребоваться nobody вместо www-data, это зависит от пользователя, под которым работает Apache.В Debian Apache обычно запускается под пользователем www-data, тогда как в Red Hat часто Apache запускается под пользователем nobody.Кроме того, /sbin/service apache2 restart может быть /sbin/service apache restart или /sbin/service httpd restart.Все зависит от конфигурации вашей системы.

Как только это будет сделано, в PHP вы можете использовать код:

exec('/sbin/service apache2 restart');

(Очевидно, это изменилось, если команда для перезапуска Apache отличается на вашем сервере.)

Обратите внимание: это вполне может считаться угрозой безопасности! Если вы сделаете это, вы полностью доверяете двоичному файлу sudo, двоичному файлу serviceи ваша система подчиняется правилам и не позволяет процессу Apache / PHP получить корневую оболочку.Я настоятельно рекомендую спросить http://serverfault.com о последствиях того, что вы здесь делаете.

4 голосов
/ 25 августа 2011
<?php echo shell_exec('service httpd restart &'); ?>

У вас могут быть проблемы с разрешениями при попытке такого сценария сделать это.Похоже, вы находитесь в полной среде разработчика, поэтому вам не должно быть важно предоставить ему повышенные привилегии.

0 голосов
/ 25 августа 2011

Файл содержит идентификатор процесса для Apache.Просто отправьте HUP на него.Для этого можно написать простой скрипт (sh) и поместить его в каталог cgi-bin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...