在Linux服务器中通过PHP脚本重新启动PHP-FPM网关
我正在运行一个LEMP堆栈,希望为它编写一个简单的控制面板 因此,我希望能够从php脚本重新启动php fpm。为了实现这一点,这就是我所做的 在c中创建了一个二进制包装器,如php shell.c: 然后,我将nginx用户添加到sudo visudo,如下所示:在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
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?