Перезапустите шлюз PHP-FPM с помощью скрипта PHP на сервере Linux

Я использую стек LEMP и хочу написать для него простую панель управления.

Итак, я хочу иметь возможность перезагрузить php-fpm из PHP-скрипта. Чтобы добиться этого, это то, что я сделал.

Создал двоичную оболочку в c как это PHP-shell.c:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_CMN_LEN 100

int main(int argc, char *argv[])
{
char cmd[MAX_CMN_LEN] = "", **p;

if (argc < 2)
{
fprintf(stderr, "Usage: ./php_shell terminal_command ...");
exit(EXIT_FAILURE);
}
else
{
strcat(cmd, argv[1]);
for (p = &argv[2]; *p; p++)
{
strcat(cmd, " ");
strcat(cmd, *p);
}
system(cmd);
}

return 0;
}

Эта программа была скомпилирована следующим образом:

gcc php_shell.c -o php_shell

Затем я добавил пользователя nginx в sudo visudo как это:

Defaults:nginx        !requiretty
nginx    ALL=(ALL)    NOPASSWD:/path/to/php_shell

Затем я выполнил команду в php-скрипте так:

var_dump(shell_exec('sudo /path/to/php_shell "service nginx restart" 2>&1'));

Как только я запускаю этот скрипт php script, я получаю 502 Gateway Error и похоже все php-fpm процессы были убиты, и он не запускается снова.

Есть идеи? Я делаю это неправильно? Я хочу добиться того же для nginx (т.е. иметь возможность перезапустить сервер nginx из php-скрипта, выполнив service nginx restart). Как мне этого добиться?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]