O PHP é uma linguagem de script rica em recursos, mas quando utilizada de forma incorreta , intencionalmente ou não, pode comprometer grande parte do servidor web ou seus dados.
Através do arquivo php.ini em disable_functions, vamos criar uma lista de funções que devem ser desabilitadas por motivos de segurança.
Localizando o arquivo php.ini correto no servidor.
O primeiro passo é encontrar o arquivo php.ini correto no servidor. Existem vários cenários em um servidor web em que são criados vários arquivos php.ini . Por exemplo, se utilizamos o php-fpm com múltiplas versões do php instaladas em nosso servidor, haverá um php.ini para cada versão… Neste caso você deverá procurar o php.ini responsável por cada versão. O local correto irá variar dependendo de sua Distribuição Linux, se utiliza algum Painel de controle ou não , etc.
A forma mais simples de localizar o php.ini correto em nosso servidor é executando um arquivo php que nos traga através de “phpinfo()” todas as configurações de nosso php.
Crie um arquivo info.php em alguma url ativa em seu servidor web e insira
<?php
phpinfo();
?>
Acesse através de seu navegador web o arquivo info.php. Serão exibidas várias informações úteis sobre o php ativo nessa URL.
Localize: “Loaded Configuration File” . Este é o caminho correto para o php.ini que desejamos . Copie o caminho para php.ini , nós vamos utilizá-lo a seguir para informar em disable_functions as funções que desejamos desabilitar.

Acesse seu servidor linux utilizado o ssh e edite o arquivo php.ini
nano /caminhodeseuphp.ini/php.ini
Localize “disable_functions =” e modifique para :
disable_functions = exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Em tempo, recomendo que por motivos de segurança desabilite allow_url_fopen e allow_url_include:
allow_url_fopen=Off allow_url_include=Off
Salve (Ctrl+o) e saia do nano (Ctrl+x)
Reinicie o httpd server
- Se utiliza o Apache e não possui o php-fpm:
Para CentOS/RedHat:
systemctl restart httpd
ou
service httpd restart
Para Debian/Ubuntu:
service apache2 restart
- Se utiliza o PHP-FPM
O PHP-FPM (FastCGI Process Manager ), é um manipulador do PHP que funciona a parte, como um serviço e não um módulo. A forma correta de reiniciar irá variar dependendo de como foi instalado em seu servidor .
Para simplificar, acesse seu arquivo info.php criado anteriormente e note que em ” Loaded Configuration File” haverá um nome parecido com “php-fpmxxx” esse será o nome do processo que você deverá reiniciar .

Com as informações acima reinicie o serviço substituindo “php-fpmxxx” pelo nome encontrado em seu servidor. :
Para CentOS/RedHat:
systemctl restart php-fpmxxx
ou
service php-fpmxxx restart
Para Debian/Ubuntu:
service php-fpmxxx restart
Para se certificar que as configurações foram atualizadas, acesse novamente seu arquivo info.php e verifique em disable_functions se a lista de funções estão sendo exibidas.
Nota Final: Para informação, utilizando o php-fpm existem ainda outras formas de desabilitar as funções que não foram abordadas neste post.