Solução para PHP não ter permissão para executar o comando exec no Linux
Referências oficiais relacionadas
PHP exec Linux sudoers file Sudo CommandsModificações ao executar no modo fastcgi
Quando o PHP está sendo executado no modo fastcgi, suas permissões são herdadas de seu programa host. Tomamos o apache como um exemplo para explicar. Em primeiro lugar, precisamos encontrar a conta sob a qual o apache está sendo executado, então usar vi ou vim para editar o arquivo / etc / sudoers e adicionar o seguinte exemplo de referência ao arquivo. No conteúdo a seguir, primeiro use o comando ps para encontrar o processo httpd do apache, observe as informações da conta no lado esquerdo do resultado retornado e edite o arquivo sudoers para adicionar autorização à conta do apache.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Modificações ao executar no modo php-fpm
Quando executado no modo php-fpm, ele é executado como um processo separado. Portanto, primeiro encontramos sua conta em execução e, em seguida, executamos as operações de autorização conforme descrito acima.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Verifique se as alterações entram em vigor
Após as operações acima, modificamos a autorização, mas ela ainda não entrou em vigor. Precisamos reiniciar o serviço para que nossa modificação tenha efeito. De acordo com nossa situação atual, reinicie o serviço apache ou php-fpm. Em seguida, execute o comando exec para ver o resultado retornado.Se o resultado retornado for obtido normalmente, foi bem-sucedido.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);