Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP管理Debian服务_Php_Nginx - Fatal编程技术网

从PHP管理Debian服务

从PHP管理Debian服务,php,nginx,Php,Nginx,我正在申请入学,但我需要能够管理Debian 7机器上运行的一些服务。我正在运行“nginx”和“PHP5-FPM”soPHP5.4。但是如何从我的PHP文件中重新启动或停止例如“nginx”?我试过了 exec("/etc/init.d/nginx stop"); 我也试过了 shell_exec("/etc/init.d/nginx stop"); 但是没有结果php返回我: Stopping nginx: nginx 提前感谢您需要成为root用户才能重新启动这些服务,除非您的web

我正在申请入学,但我需要能够管理Debian 7机器上运行的一些服务。我正在运行
“nginx”
“PHP5-FPM”
so
PHP5.4
。但是如何从我的PHP文件中重新启动或停止例如
“nginx”
?我试过了

exec("/etc/init.d/nginx stop");
我也试过了

shell_exec("/etc/init.d/nginx stop");
但是没有结果php返回我:

Stopping nginx: nginx

提前感谢

您需要成为root用户才能重新启动这些服务,除非您的web服务(如Apache)以root用户身份作为站点运行,否则这是行不通的。有两种选择可供您选择,最佳选择可能取决于您的情况

  • 您可以创建一个两层方法,其中前端(由web服务器运行)发出命令,后端是一个以root用户身份运行并执行这些命令的服务。这还可以增加一层安全性,因为后端可以在命令执行之前对其进行清理。前端和后端之间的通信可以是任意数量的内容,例如前端每隔几秒钟写入一个文件,后端每隔几秒钟读取一次,或者您可以使用WebSocket使其实时
  • 您可以以root用户身份运行web服务器的其他实例,该实例只处理此任务。您肯定希望通过SSL运行此操作,这有点冒险,因为如果有人可以将代码注入到您的某个页面中,他们的代码将作为root用户在您的服务器上运行

这是许可证我想我会选择你的第二个选择。因为它将是SSL,所有命令都是硬编码的。但我仍然会考虑第一个,但是我的Linux编程技巧是不可能的,这可能是个问题。非常感谢你!我更喜欢第一种更安全的方法,但更简单的说,如果您只需要停止和启动服务,您可以让php接触特定目录中的一些文件,并在后台运行cronjob检查这些文件,作为一个小例子,触摸
nginx\u stop
会使cronjob停止nginx服务器并删除触摸到的文件