2014-01-08 57 views
0

我正在申请学校,但我需要能够管理运行在我的Debian 7机器上的一些服务。我正在运行"nginx""PHP5-FPM"因此PHP 5.4。但我怎么能从我的PHP文件重新启动或停止例如"nginx"?我试图从PHP管理Debian服务

exec("/etc/init.d/nginx stop"); 

我也试过

shell_exec("/etc/init.d/nginx stop"); 

,但没有任何结果的PHP返回我:

Stopping nginx: nginx 

在此先感谢

+0

这是允许的 – sas

回答

0

你需要root权限才能重新启动这些服务,除非你的网络服务(如Apache)以root身份作为你的网站运行,否则这是行不通的。有几种选择可供选择,最好的选择可能取决于你的情况。

  • 您可以创建一个双层方法,其中前端(由Web服务器运行)发出命令,而后端是以root身份运行的服务,执行它们。这也可能会增加一层安全性,因为后端可能会在执行命令之前清理这些命令。前端和后端之间的通信可以是任何数量的事情,例如前端写入的文件和后端每隔几秒读取的文件,或者您可以使用WebSockets并使其成为现实-时间。
  • 您可以以root身份运行您的Web服务器的其他实例,该实例仅处理此任务。你肯定会希望通过SSL来运行它,并且有点冒险,因为如果有人可以将代码注入到你的一个页面中,他们的代码将以root身份在你的服务器上运行。
+0

我要去与你的第二个选项,我认为。因为它将是SSL并且所有命令都是硬编码的。但我仍然会考虑第一个,但是我的Linux编程技巧不是那么可能会成为问题。非常感谢你! – djkevino

+0

我更喜欢第一个更安全的方式,但以更简单的方式,如果您只想停止并启动服务,则可以让php在某个目录中触摸某些文件,并在后台运行cronjob以检查这些文件文件,作为触摸'nginx_stop'的小例子将使cronjob停止nginx服务器并删除所触摸的文件 –