在Linux服务器中通过PHP脚本重新启动PHP-FPM网关

在Linux服务器中通过PHP脚本重新启动PHP-FPM网关,php,linux,nginx,sudo,Php,Linux,Nginx,Sudo,我正在运行一个LEMP堆栈,希望为它编写一个简单的控制面板 因此,我希望能够从php脚本重新启动php fpm。为了实现这一点,这就是我所做的 在c中创建了一个二进制包装器,如php shell.c: 然后,我将nginx用户添加到sudo visudo,如下所示: gcc php_shell.c -o php_shell Defaults:nginx !requiretty nginx ALL=(ALL) NOPASSWD:/path/to/php_shell v

我正在运行一个LEMP堆栈,希望为它编写一个简单的控制面板

因此,我希望能够从php脚本重新启动php fpm。为了实现这一点,这就是我所做的

在c中创建了一个二进制包装器,如php shell.c:

然后,我将nginx用户添加到sudo visudo,如下所示:

gcc php_shell.c -o php_shell
Defaults:nginx        !requiretty
nginx    ALL=(ALL)    NOPASSWD:/path/to/php_shell
var_dump(shell_exec('sudo /path/to/php_shell "service nginx restart" 2>&1'));
然后我在php脚本中执行了如下命令:

gcc php_shell.c -o php_shell
Defaults:nginx        !requiretty
nginx    ALL=(ALL)    NOPASSWD:/path/to/php_shell
var_dump(shell_exec('sudo /path/to/php_shell "service nginx restart" 2>&1'));
一旦我运行这个脚本php脚本,就会出现502网关错误,并且似乎所有的php fpm进程都已停止,并且不会重新启动


有什么想法吗?我做错了吗?我希望实现与nginx相同的功能,即通过执行服务nginx restart,能够从php脚本重新启动nginx服务器。如何实现这一点?

重新启动时,php fpm将关闭。因此,执行shell_execmethod并获得502坏网关将被中止。我建议您可以使用Nginx+Lua来执行脚本以重新启动php-fpm。很容易使用。您可能不需要创建自己的包装器,而需要查看监视/重新启动工具,例如Monit?