如何通过(web)按钮单击重新启动Apache?

时间:2011-08-25 16:50:47

标签: php apache restart

我正在玩我的虚拟机和我正在开发的代码要求我每次都重新启动apache以捕获更改。我认为只要有一个书签,或链接或按钮点击我可以运行来做这件事会很好。有关如何在CentOS 5开发虚拟机上使用PHP实现此目的的任何想法吗?

4 个答案:

答案 0 :(得分:17)

正如Marc B所说,你需要root privs才能重启Apache。处理此问题的最佳方法是恕我直言,即为用户提供Apache访问权限,以便通过the sudo command重新启动Apache。

您需要修改/etc/sudoers文件并添加类似以下内容的行:

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二进制文件{{1二进制,并且您的系统遵守规则而不让Apache / PHP进程获得root shell。我强烈建议http://serverfault.com询问你在这里所做的事情。

答案 1 :(得分:4)

<?php echo shell_exec('service httpd restart &'); ?>

虽然这样的脚本尝试执行此操作可能会遇到权限问题。听起来你处于一个完整的开发环境中,所以你提升它的权限对你来说无关紧要。

答案 2 :(得分:0)

文件包含apache的进程ID。只需发送一个HUP即可。可以编写一个简单的脚本(sh)来实现这一点 - 并将其放在cgi-bin目录中。

答案 3 :(得分:-4)

如果您使用的是Linux,则可以编写一个shell脚本来照顾您。

e.g。

if [ $? -ne 0 ] # if apache not running
then
# restart apache
$RESTART

此博客的更多详情:http://www.droidmsg.com/blog/?p=146