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

qod*_*nja 8 php apache restart

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

Jos*_*osh 17

正如Marc B所说,你需要root privs才能重启Apache.处理这种情况的最好办法,恕我直言,是给那Apache下运行的访问通过重新启动Apache的用户sudo命令.

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

Cmnd_Alias      RESTART_APACHE = /sbin/service apache2 restart

www-data ALL=NOPASSWD: RESTART_APACHE
Run Code Online (Sandbox Code Playgroud)

您可能需要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');
Run Code Online (Sandbox Code Playgroud)

(如果重启Apache的命令在您的服务器上有所不同,显然会改变它.)

请注意: 这很可能被视为安全风险!如果这样做,您完全信任sudo二进制文件,service二进制文件和系统遵守规则,而不是让Apache/PHP进程获得root shell.我强烈建议您在http://serverfault.com上询问您在这里所做的事情.