Base de conhecimento ServCloud

proc_open erro Laravel- Como corrigir sem comprometer a segurança do servidor

O que é o PROC_OPEN?

O proc_open é um parâmetro PHP usado para executar o comando e abrir ponteiros de arquivo.

Normalmente, os proprietários do servidor desativam essa função devido ao risco de segurança, pois permite chamadas externas.

 

A função proc_open e Laravel

 

Laravel é um framework web PHP de código aberto. Esta ferramenta de desenvolvimento facilita a tarefa de desenvolvimento de sites. Isso porque seu código é simples e limpo.

Ele usa muitas funções PHP em seu código para várias funcionalidades. Uma dessas funções PHP é proc_open. Essa função executa um comando e abre ponteiros de arquivo para E/S.

Mas na maioria dos servidores, a função proc_open será desativada devido ao risco de segurança. Esta função permite chamadas externas que os atacantes podem utilizar. Mas se os sites Laravel usam essa função em algum momento, ele lança erros.

 

ERRO:
The Process class relies on proc_open, which is not available on your PHP i
nstallation.

Captura de tela 2024-04-10 164516.png

O cliente tinha uma conta cPanel no servidor CloudLinux com o CageFS habilitado. Então, para corrigir o erro, temos que ativar a função proc_open ou evitar usar essa função.

A seguir, vamos ver como fazer isso.

Como corrigir o erro de proc_open no Laravel?

Devido a questões de segurança, a função proc_open em um servidor geralmente é desabilitada se sim, é preciso habilitar, depois de garantir a segurança do servidor.

Vejamos duas situações em que corrigimos o erro.

 

Para uma conta cPanel

Antes de habilitar a função proc_open em todo o servidor, é preciso então garantir à segurança de outros clientes no servidor bem como o servidor.

Depois de olhar para as medidas de segurança disponíveis no servidor. Aqui estão as etapas para habilitar a função proc_open.

  • Primeiro, faça login na conta cPanel

  • Em seguida, selecione a versão do PHP que Laravel usa. Aqui foi 7,2.

  • Também selecione versões do PHP que não eram nativas.

  • Em seguida, clique em Alternar para Opções PHP.

  • Mais tarde, adicione e edite a directiva disabled_function. Dessa forma, viabiliza-se o proc_open aqui.

Aqui, não habilitamos a função proc_open em todo o servidor, mas sim para uma única conta do cPanel. Além disso, como o servidor tinha o CageFS habilitado, ele reduz os riscos de segurança no servidor.

 

Em outros servidores de hospedagem compartilhada

Habilitar a função proc_open em todo o servidor pode não ser aceitável devido a riscos de segurança. Portanto, se o erro apareceu em um servidor de hospedagem compartilhada, recomendamos que nossos clientes evitem usar a função.

Normalmente, um aplicativo Laravel padrão não exigirá proc_open() para servir um site. Em vez disso, os usuários usam o modo de depuração para habilitar o serviço de relatório de erros Flare. Então nós publicamos o arquivo de configuração flare,

php artisan vendor:publish --tag=flare-config

E edite a configuração/flare.php. Aqui definimos o seguinte parâmetro false.

'collect_git_information' => false

Portanto, o aplicativo não usará proc_open função.

 

Conclusão

Em suma, Laravel é uma ferramenta de aplicação web baseada em PHP que usa muitas funções PHP como proc_open. Hoje, vimos como habilitar essa função depois de analisar a segurança do servidor.

 

 

Aprenda junto com a nossa equipe