Ir para conteúdo
  • Cadastre-se

dev botao

Servidor linux travando quando passado parâmetros inválidos para LIB.


Recommended Posts

  • Membros Pro

Boa tarde pessoal, 

Resolvi postar aqui um problema que temos há algum tempo aqui na empresa em relação as LIBs.
Estamos rodando a LIB consumindo a AcbrLibNfe no Linux com PHP, mas meu receio é em produção porque existe esse problema de qualquer parâmetro inválido, mata o servidor e ocorre um problema de memória, já coloquei em uma máquina local linux, já coloquei na AWS, ocorre a mesma coisa.

O erro que acontece no c++ é o seguinte:
image.thumb.png.3eeb2fb84cec55dd7ecb95327f15ba1f.png

Em todos os lugares que pesquisei (incluindo gpt), é dito que isso é um problema de memória (ponteiro).
Muitas pessoas tiveram o mesmo problema, o exato erro Segmentation Fault(11), no php, ele aparece da seguinte forma:
image.png.4d9de4e4a8c5abdd4688980c0cc311d3.png

Mesmo colocando o código dentro de um try {} catch {} o erro acontece.
Alegam que o erro é o Xvfb não ter sido iniciado corretamente. Não é isso, se o Xvfb não for iniciado a extensão também não inicia.
Só para lembrar, o Xvfb é o emulador da parte gráfica para versões do Linux que não possuem interface visual (como na aws).

Com o comando abaixo eu verifico o status do serviço do Xvfb:

image.thumb.png.3929855bbbb3955bf65366f636b988a8.png

Para contornar o problema da  lib de não retornar o erro, o primeiro passo foi criar as classes da pasta Meta para que o php valide todas as informações que são passadas para extensão:

image.thumb.png.3fb2f498a8df447ba7f28d6842450334.png


Mas mesmo assim, em alguns casos ocorrem erros, acredito que seja pelo fato de parte da documentação estar errada ou desatualizada, um exemplo, é a Lib CRY_CAPICOM que está na documentação como opção válida, porém, ao definí-la na extensão, o erro Segmentation Fault acontece:

image.thumb.png.fedd3a3de78af0e11e0ffa9fb2e57e7a.png

Isso está extremamente lento, (descobrir as combinações válidas). Além do fato de que eu também preciso validar o tipo de dado (string, boolean, number etc) para passar para a extensão pois se o tipo de dado estiver errado, a extensão também para de funcionar.
Na classe NFeConfig.php eu faço todas as validações iniciais (apenas as iniciais, pois todo o código precisa de validações para contornar o bug da extensão). Todos os caminhos de arquivos e diretórios tem que ser validados pois um caminho inexistente também gera o erro.

O erro está no c++, corrigindo lá o erro no php deixará de acontecer.
Se você quiser eu posso criar um zip aqui com os arquivos para que testem aí. 
Eu terei que criar um arquivo de instruções para que consigam fazer funcionar.

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde!

O exemplo que temos disponível em PHP foi uma contribuição de um membro da comunidade.

É provável que ele esteja de fato necessitando de uma atualização. 

Em 25/03/2024 at 13:19, Evandrobk disse:

Se você quiser eu posso criar um zip aqui com os arquivos para que testem aí. 
Eu terei que criar um arquivo de instruções para que consigam fazer funcionar.

Por favor.

Lhe daremos os devidos créditos quando o exemplo for atualizado.

  • Curtir 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.