Neste artigo, quero fornecer o procedimento passo a passo para ativar ou desativar funções nativas do php editando a diretiva “disable_functions” no arquivo php.ini.
Às vezes, a configuração padrão do PHP em seu servidor precisa ser personalizada para acomodar a compatibilidade do seu sistema com o ambiente de produção.
Sou o autor do Inspector.dev, o pacote de monitoramento em tempo real para Laravel e Symfony. Este pacote usa funções nativas pro_open e proc_close php para realizar a transferência de dados do seu servidor para a API do Inspector de forma assíncrona.
Ele também pode ser configurado para usar as funções CURL nativas do PHP que estão habilitadas por padrão, mas neste caso ele enviará os dados de monitoramento para o Inspector de forma síncrona como outros pacotes fazem como Sentry, Bugsnag, etc. significa que seu aplicativo pode ficar um pouco lento porque o mecanismo php precisa esperar antes de encerrar a conexão com o cliente.
Recentemente, alguns desenvolvedores me contataram porque as funções proc_open e proc_close foram desativadas em sua configuração php, então eles precisam desbloqueá-las para aproveitar as vantagens do envio assíncrono de dados.
É muito raro, mas decidi escrever este tutorial como um recurso de suporte para este caso de uso.
O arquivo php.ini é O arquivo de configuração do PHP. O arquivo contém uma lista de pares chave/valor chamados "diretivas". As diretivas são agrupadas em seções, embora sejam principalmente para fins organizacionais.
Quando o PHP é iniciado, ele lê este arquivo e configura estruturas de dados internas para armazenar a configuração. Durante a execução, o PHP refere-se a essas estruturas de dados internas para determinar como ele deve se comportar em muitas áreas principais, como: tratamento e registro de erros, limites de recursos (memória, tempo de execução), uploads de arquivos, conexões de banco de dados e muito mais.
Para quem também está se perguntando: o PHP pode funcionar mesmo se não houver um arquivo php.ini, ele simplesmente aplicará os valores padrão a todas as diretivas.
Para quem não conhece, aqui está um exemplo de arquivo php.ini:
https://github.com/php/php-src/blob/master/php.ini-production
Editando o arquivo php.ini podemos desativar funções nativas do PHP que você não poderá chamar dentro do seu código PHP.
Às vezes, esse recurso é usado para restringir o uso de algumas funções em ambientes de hospedagem compartilhada, pois o uso incorreto delas pode causar problemas de segurança para outros usuários. Funções como exec() geralmente são desabilitadas, mas às vezes os provedores de servidores são muito conservadores e podem desabilitar funções necessárias nas tarefas diárias de programação.
Execute o comando abaixo no terminal da sua máquina para obter a localização atual do arquivo (funciona tanto para Win quanto para Unix):
php --ini
Locais comuns: /etc/php.ini, /etc/php/8.x/php.ini (substitua x pelo número da versão da sua instalação)
Para editar arquivos no servidor prefiro usar o editor vim que deve estar disponível em qualquer máquina Unix.
// Use the file path from the command above sudo vim /etc/php.ini
Role para baixo até a diretiva "disable_functions". Deve estar na primeira metade do arquivo e conter uma lista de funções separadas por vírgula.
disable_functions=exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Para carregar as novas configurações você precisa reiniciar o PHP. A instrução abaixo deve funcionar na maioria dos servidores. Eventualmente, você pode pesquisar no Google por um sistema operacional específico.
// Change the version of the PHP with what is in use in your machine sudo systemctl restart php8.2-fpm.service
Para mais artigos técnicos você pode me seguir no Linkedin ou X.
Inspector é uma ferramenta de monitoramento de execução de código projetada especificamente para desenvolvedores de software. Você não precisa instalar nada no nível do servidor, apenas instale o pacote Laravel ou Symfony e você está pronto para começar.
Se você está procurando monitoramento HTTP, insights de consulta de banco de dados e a capacidade de encaminhar alertas e notificações para seu ambiente de mensagens preferido, experimente o Inspector gratuitamente. Registre sua conta.
Ou saiba mais no site: https://inspector.dev
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3