Ir para conteúdo
  • Cadastre-se

dev botao

AJUDA SERVIDOR LINUX


Ver Solução Respondido por Renato Rubinho,

Recommended Posts

  • Membros Pro
Postado

- Boa tarde, amigos estou hospedando meu sistema em um servidor LINUX e pessoal lá da nuvem é super gente fina, eu não sei nada de Linux e estou homologando a acbrLib em PHP, no local host windows/64 as dlls até onde testei estão funcionando bem, então resolvi enviar os fontes para a nuvem e testar lá, enviei essa dica: https://acbr.sourceforge.io/ACBrLib/ComoInstalarDistribuir.html que aparentemente foi feita corretamente porque na primeira tentativa de acessar os arquivos *.so dava um tipo de erro e após essa dica mudou o erro:

 

Serviço não disponível

O servidor está temporariamente impossibilitado de atender sua solicitação
devido a tempo de inatividade para manutenção ou problemas de capacidade.
Tente novamente mais tarde.

Isso na tela e no servidor linux que possue um log gera esse erro:

 

[Thu Oct 31 13:45:14.291108 2024] [proxy_fcgi:error] [pid 2569713:tid 139719530747456] [client 177.81.180.211:61013] AH01067: Failed to read FastCGI header, referer: https://...

[Thu Oct 31 13:45:14.291214 2024] [proxy_fcgi:error] [pid 2569713:tid 139719530747456] (104)Connection reset by peer: [client 177.81.180.211:61013] AH01075: Error dispatching request to : , referer: https://...

Se algum colega poder dar uma dica para SERVIDOR LINUX do porque não consigo ler as acbrlib´s agradeço.

att;

HASA

  • Fundadores
Postado

Me parece que as permissões não estão configuradas corretamente...

Mas somente acessando o Servidor para saber...

Eu não recomendo você subir um serviço em uma tecnologia que você ou sua empresa não domine...

Você poderia contratar algum Free-lancer de TI para te ajudar com isso...

Mas subir um Servidor sem conhecimento é um risco .. pode expor o Servidor a sérios problemas de segurança

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Membros Pro
Postado

Olá Daniel, descobri que o erro da exatamente aqui:

$ffi = FFI::cdef( file_get_contents( $importsPath ), $dllPath  );

As permissões que citou tem haver pq os caminhas e nomes dos arquivos estão certinho, inclusive verifiquei a grafia por causa do MIUSCULO e MINUSCULO e tudo certo também.

Verificamos as permissões de pasta de arquivo, tudo ok.

o erro persiste:

Service Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.


Apache/2.4.52 (Ubuntu) Server at sxxxxx.xxxxx.com Port 443

Qualquer dica dos colegas é bem vinda.

att;

HASA

7 horas atrás, Daniel Simoes disse:

Me parece que as permissões não estão configuradas corretamente...

Mas somente acessando o Servidor para saber...

Eu não recomendo você subir um serviço em uma tecnologia que você ou sua empresa não domine...

Você poderia contratar algum Free-lancer de TI para te ajudar com isso...

Mas subir um Servidor sem conhecimento é um risco .. pode expor o Servidor a sérios problemas de segurança

 

  • Consultores
Postado
Em 01/11/2024 at 08:23, Daniel Simoes disse:

Eu não recomendo você subir um serviço em uma tecnologia que você ou sua empresa não domine...

Primeiramente, gostaria de frisar a sugestão de procurar um suporte especializado para suporte ao cenário que você não domina.

Em 01/11/2024 at 16:14, HASA disse:

erro da exatamente aqui:

$ffi = FFI::cdef( file_get_contents( $importsPath ), $dllPath  );

Temos relatos de problemas com servidores SEM ambiente gráfico ao instânciar o FFI, pois as bibliotecas do ACBr ainda possuem dependência do ambiente gráfico devido aos motores geradores de relatórios.

Caso o seu servidor NÃO possua ambiente gráfico:

1. Será necessário instalar um emulador tipo o Xvfb

2. No PHP, para funcionar o acesso ao ambiente gráfico emulado, é necessário adicionar a linha a seguir, antes de instanciar a Lib.

putenv("DISPLAY=:1")

2.1. Segue função, experimental, para identificar se existe ambiente gráfico emulado ( verificaAmbienteGrafico ) e a função CarregaContents() atualizada com o tratamento para o cenário SEM ambiente gráfico.

function verificaAmbienteGrafico()
{
    $verificaX11 = shell_exec('pgrep Xorg 2>&1') !== null;
    $displayX11 = getenv('DISPLAY') !== false;
    if ($verificaX11 || $displayX11) {
        // Ambiente grafico X11
        return 1;
    } else {
        $verificaXVFB = shell_exec('pgrep Xvfb 2>&1') !== null;
        $displayXVFB = strpos(getenv('DISPLAY'), ':99') !== false;
        if ($verificaXVFB || $displayXVFB) {
            // Emulador XVFB    
            return 2;
        } else {
            // Sem ambiente grafico
            return 0;
        }
    }
}
function CarregaContents($importsPath, $dllPath)
{
    $modoGrafico = verificaAmbienteGrafico();
    if ( $modoGrafico === 0) {
        throw new Exception("Ambiente gráfico não identificado");
        return -10;
    }
    if ($modoGrafico === 2){
        putenv("DISPLAY=:1");
    }
    $ffi = FFI::cdef(
        file_get_contents($importsPath),
        $dllPath
    );
    return $ffi;
}

3. Favor atualizar as funções do item 2.1 na ACBrComum.php e reportar o resultado

  • Curtir 1
  • 2 semanas depois ...
  • Membros Pro
Postado

Boa tarde, está instalado, resposta do técnico:

Até onde entendo, a interface gráfica ("X") não vai ficar rodando, a menos que tenha algo a usando no momento (por exemplo uma tela de login -- que alias ficaria pública na internet), um processo que use a interface, como o Firefox, etc.).

Assim, este código abaixo está errado (na minha opinião). Ele não está verificando se existe o ambiente disponível e sim se ele está rodando no momento (o grep do linux (este pgrep do seu código) apenas mostra processos que estão ativos no momento, como o gerenciador de tarefas do Windows).

Pesquisando no forum vi algo sobre LEGACY pode ter haver com meu caso?

att;

HASA

  • Consultores
Postado
2 horas atrás, HASA disse:

Assim, este código abaixo está errado (na minha opinião).

Você tem o cenário e os fontes para testar. Se está errado, remova pois como eu disse acima, é uma função experimental, a ideia é verificar automaticamente se precisa ou não do código PHP para setar o display. 

Teste com a função conforme abaixo, apenas setando o display como 99 ao invés de 1.

function CarregaContents($importsPath, $dllPath)

{

     putenv("DISPLAY=:99");

    $ffi = FFI::cdef(

        file_get_contents($importsPath),

        $dllPath

    );

    return $ffi;

}

1.Tenha certeza que o servidor NÃO possui ambiente gráfico 

2. Tenha certeza que o emulador xvfb está instalado 

3. Confirme se está iniciando o emulador xvfb 

4. Teste uma página qualquer para verificar se o servidor de internet e o PHP estão funcionando 

5. Verifique no phpinfo se o FFI está habilitado 

  • 2 semanas depois ...
  • Membros Pro
Postado

Bom dia, resultado da opção 5

FFI

FFI support enabled
Directive Local Value Master Value
ffi.enable On On
ffi.preload no value no value

att; 

HASA

×
×
  • 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.