Eu quero trabalhar em um painel de controle de hospedagem linux personalizado com base na minha experiência no gerenciamento de pilha LEMP / LAMP. Este é apenas um projeto de estimação. Eu acredito que encontrei algum obstáculo.
O CP está sendo escrito em PHP e servidor por NginX como servidor padrão na porta 8000.
Eu não estou usando nenhum framework, apenas baunilha PHP.
Em putty, logado como root, eu posso pegar o sistema uuid assim:
[root@localhost ~]# dmidecode -s system-uuid
997C4DE8-213B-4ACC-8E23-01E79D6CC12F
Quando eu tento isso em PHP com o seguinte script:
var_dump(shell_exec('dmidecode -s system-uuid 2>&1'));
Eu recebo o seguinte:
sh: dmidecode: command not found
Como posso executar o comando acima para obter a saída em PHP?
O Nginx / PHP-FPM está sendo executado como usuário nginx
. Preciso adicionar o usuário nginx ao grupo raiz?
Eu quero ser capaz de executar comandos muito específicos como: /etc/init.d/php-fpm restart
do meu painel de controle (para reiniciar o gateway php-fpm).
Como posso conseguir isso? Quais são minhas opções? Como o painel de controle, como cPanel, DirectAdmin, etc ... faz isso?
Eu também tentei o seguinte método. Instalou sudo
e usou o comando sudo visudo
e adicionou as seguintes linhas no final:
nginx ALL=(ALL) NOPASSWD:/path/to/php_shell.sh
Defaults:nginx !requiretty
e o conteúdo de php_shell.sh
é:
#!/bin/bash
dmidecode -s system-uuid
Agora, tentei executá-lo assim:
var_dump(shell_exec('sudo sh /path/to/php_shell.sh 2>&1'));
Eu recebo: sudo: no tty present and no askpass program specified