A diretiva disable_functions impede que funções PHP específicas sejam chamadas. Ela pode reduzir algumas formas de abuso após uma invasão, mas não é uma fronteira completa de segurança: não corrige código vulnerável, não controla outros processos e pode quebrar aplicações, filas, backups e bibliotecas.
Antes de bloquear funções
- atualize PHP, sistema, CMS, plugins e dependências;
- remova extensões e aplicações sem uso;
- use usuários, permissões e isolamento adequados;
- restrinja acesso administrativo e segredos;
- mantenha backup, WAF, antimalware e monitoramento;
- levante quais funções a aplicação usa em produção e em tarefas agendadas.
exec, shell_exec, system, proc_open e popen têm usos legítimos. Bloqueá-las pode interromper conversão de mídia, filas, Composer, Git, antivírus e rotinas de backup sem tornar um site vulnerável seguro.Escopo da configuração
Em servidores com múltiplas versões PHP, cada versão e cada SAPI pode carregar arquivos diferentes. PHP-FPM do site, Apache e CLI não necessariamente usam a mesma configuração. Verifique:
php --ini
php -r "echo ini_get('disable_functions'), PHP_EOL;"
php-fpm -i | grep disable_functions
O último comando varia conforme a versão/pacote. Compare com uma página de diagnóstico protegida no domínio e remova-a depois.
Configurar no cPanel/WHM
Para um domínio, abra MultiPHP INI Editor, escolha o domínio e use o modo editor quando a diretiva estiver disponível:
disable_functions = exec,passthru,shell_exec,system
Essa é apenas uma ilustração, não uma recomendação universal. Em WHM, o administrador pode usar MultiPHP INI Editor para uma versão do EasyApache 4. Alterações globais afetam todas as contas nessa versão e exigem teste de compatibilidade.
Procedimento de mudança
- Registre a configuração atual e faça backup.
- Crie uma lista mínima baseada no risco e no uso real.
- Aplique primeiro em homologação ou em um único domínio.
- Recarregue o PHP-FPM quando o painel não fizer isso automaticamente.
- Teste páginas, login, upload, e-mail, cron, filas, relatórios e backups.
- Monitore logs por chamadas a funções desabilitadas.
- Documente exceções e mantenha um retorno rápido.
Limitações importantes
- a lista só afeta funções internas do PHP configuradas;
- um invasor pode explorar outras funções, extensões ou processos;
- restrições de diretório como
open_basedirtambém têm limitações e compatibilidade própria; - em hospedagem compartilhada, o provedor pode controlar a diretiva;
- alterar
php.inido CLI não garante mudança no site.
Quando uma aplicação apresenta erro
Procure no log mensagens como “Call to undefined function” ou falhas ao iniciar processos. Identifique a função e a origem da chamada. Se o recurso é legítimo, remova apenas aquela função da lista ou isole a aplicação em ambiente adequado; não desative toda a proteção por tentativa.
Referências: disable_functions no manual do PHP e MultiPHP INI Editor no cPanel.
Recursos relacionados
Continue com materiais e serviços relacionados ao tema deste guia.