Erros de servidor: O que são e como corrigi-los?
Você acabou de criar e publicar seu site ou fez alterações ou atualizações importantes e após isso, vai ansioso acessá-lo para ver como ficou, mas eis que dá de cara com um erro de servidor.
Vem a frustração e a dúvida: O que fazer?
Essa é uma pergunta que muita gente se faz, sem saber nem por onde começar.
Compreender o que pode estar ocorrendo, bem como os procedimentos a serem adotados e as possíveis soluções, é o objetivo desse conteúdo.
O que são erros de servidor?
Como o nome sugere, um erro de servidor é genericamente um alerta de uma condição a qual o servidor não pode ou não “sabe” como tratar.
Essa resposta é simples mas envolve alguns desdobramentos e que veremos em detalhes logo mais.
O primeiro ponto que se deve ter em mente no tratamento de qualquer problema, é saber o que o originou. Não é diferente no caso de um erro de servidor.
Já o segundo ponto, é saber que embora seja comum classificar como erro de servidor, o mais adequado é designar como status (ou condição, ou ainda situação) do servidor web para a respectiva ação.
Significa dizer que da mesma forma como uma instrução PHP ou HTML, pode retornar um erro, pode também produzir um ok, ou seja, que foi executada e finalizada com sucesso. Isso é chamado de códigos de status de respostas HTTP.
Assim, quando você clica em um link e como resultado desse clique, uma nova página é acessada e exibida na tela, carregando todos os elementos nela previstos e contidos, o status de resposta HTTP para tal, é 200.
Se por outro lado, o destino ou path (caminho) da página está errado, ou talvez o arquivo.html – ou PHP – correspondente não existe nesse path, o status será 404 e dependendo de como foi configurado o servidor, uma página de erro 404 personalizada pode ser exibida, contendo informações adicionais, por exemplo.
A diferença nos dois casos, é que no primeiro não é necessário informar o status do HTTP para a requisição, pois é visível o resultado, bem como se esperava que fosse assim.
Na prática e em termos mais rigorosos, o segundo erro (erro 404), nem pode ser considerado um erro de servidor. Logo você entenderá o porquê.
Por que ocorrem os erros de servidor?
A exibição do status HTTP, está condicionada às situações nas quais o resultado não era o esperado e/ou é necessário que o responsável pelo site faça algo.
Embora normalmente as pessoas imaginem que todos os erros de servidor sejam de competência do suporte resolver, afinal aparece como “erro de servidor”, não necessariamente é o caso. Principalmente nas situações nas quais o erro passou a ocorrer, somente após uma alteração feita no seu site.
Para começar, lembre-se que a maior parte dos planos de hospedagem existentes no mercado, consistem de planos de hospedagem compartilhada, o que significa que seu site está hospedado em um servidor juntamente com vários outros sites e que todos devem usar simultaneamente os mesmos serviços, incluindo o serviço responsável pela exibição do seu site e de todos os demais.
Assim, o servidor tem que dispor de flexibilidade para atender os mais diversos tipos de aplicação web.
Em termos práticos, significa que ele tem que ser capaz de exibir um site bem simples, feito apenas em HTML e composto por poucas dezenas de arquivos, como também um gigantesco, elaborado em PHP, com vários bancos de dados e milhares de arquivos.
Por isso, servidores web precisam de muito poder computacional, devem ser capazes de atender um volume imenso de solicitações. Ainda assim, como tudo na vida, há limites e há regras para que isso ocorra.
Quando um limite é excedido ou uma regra não é cumprida, é quando o erro acontece. Resumindo, o servidor não pôde atender sua solicitação e definiu o status para a requisição, um código interpretável como um erro.
Vale salientar que a variedade de possibilidades, é imensa. A seguir listamos e comentamos algumas das mais comuns:
1. Sintaxe
Seja o HTML, seja o PHP, seja qualquer outra linguagem utilizada (ASP, Pearl, Ruby, Python, etc), precisa ser escrita obedecendo um conjunto de regras de sintaxe.
A simples – e comum – substituição de um ponto e vírgula por uma vírgula, pode mudar a interpretação do código e produzir um erro ou uma condição que o servidor não “sabe” como interpretar.
2. Requisitos mínimos
Da mesma forma que ocorre no seu notebook ou no smartphone, as aplicações Web – e o site é uma aplicação – necessitam de requisitos mínimos para serem executadas, como por exemplo, versão do PHP e do banco de dados, uma determinada quantidade de memória RAM, etc.
Se tais requisitos não estão disponíveis ou não são suficientes, o servidor Web não é capaz de atender e dar a resposta esperada.
3. Recursos do sistema
Os recursos do sistema correspondem a demanda da aplicação em relação ao que ele disponibiliza, como por exemplo, o número de processos do PHP ou do MySQL, o percentual de uso da CPU, bem como o número de núcleos que são alocados ou ainda quem sabe, a memória RAM.
Ainda que um site esteja em um servidor dedicado, um site pode atingir o limite existente de tais recursos, quando por exemplo, a visitação é muito grande ou se a programação associada é muito exigente.
Qualquer que for a situação que provoque o esgotamento de algum dos recursos do sistema, produzirá um erro devido à incapacidade do servidor ter o respectivo recurso para executar a programação.
4. Permissionamento
As permissões de pastas (755) e de arquivos (644), é um dos fundamentos sobre os quais servidores Linux operam.
Alterar tais permissões, especialmente as mais permissivas, geralmente produzem alertas em sistemas que tentam fazer uso delas.
5. Configurações (.htaccess)
O arquivo .htaccess é um arquivo de texto, oculto / inacessível externamente e que serve para determinar configurações do servidor Web (Apache).
Assim, é possível por exemplo, efetuar um redirecionamento 301, forçar o uso do HTTPS, configurar URLs amigáveis, entre uma série de possibilidades.
Mas para tanto, é preciso atentar para a sintaxe, já que qualquer caractere usado incorretamente, tanto pode produzir um resultado diferente do pretendido, como uma condição que o servidor não seja capaz de lidar e consequentemente, um erro.
Além da sintaxe, é preciso ter certeza de que as configurações feitas são possíveis. As regras / configurações de um arquivo .htaccess, podem produzir resultados diferentes em diferentes servidores, quando se tenta algo que não é permitido ou quando as configurações do Apache mudam. Nesses casos, deve-se consultar o suporte do hosting.
6. Segurança
Servidores contém uma série de sistemas e protocolos de segurança, como é o caso do ModSecurity, que nada mais é do que um firewall ou WAF (Web Application Firewall) destinado a atuar sobre aplicações web e que pode ser utilizado nos principais web servers atualmente utilizados: Apache, Nginx, LiteSpeed e IIS.
No caso da HostMídia, nós o utilizamos habilitado por padrão em todos os nossos servidores.
Seu princípio, tal como em todo firewall, é se basear em um conjunto de regras / filtros, aplicáveis às instruções HTTP, detectando e impedindo ações maliciosas ou inseguras para o ambiente no qual está associado.
Quando uma – ou mais – instrução da programação corresponde a qualquer dessas regras, ela não é executada, acarretando erro de execução e consequentemente, um erro do servidor web.
Quais são os erros de servidor?
Os erros de servidor são identificáveis e agrupados por números que sempre começam com o dígito 5 e na forma 5XX, ou seja, são números de três dígitos.
Como vimos, mais do que um erro, é também um status ou condição do servidor diante de uma requisição feita a ele.
Sendo assim, há erros que usam outros códigos, iniciados por 3 e 4 e que erroneamente são interpretados por muitos como erros do servidor. No entanto, os códigos no formato 4XX, são tidos como erro do usuário, ainda que por exemplo, tenham ocorrido pelo clique em um link, que pode ser o caso de um erro 404 (página não encontrada).
Já os erros sob a forma 3XX, são erros de redirecionamento e, portanto, de responsabilidade do administrador do site e/ou do desenvolvedor.
Vale ressaltar que apesar do conceito ser o mesmo para qualquer servidor, os meios para se tratar cada problema variam de um servidor para outro, principalmente quando há diferença nos sistemas operacionais utilizados, como é o caso do Windows ou Linux.
Aqui o nosso foco, são os servidores Linux.
Por fim, mas não menos importante, quando falamos de erros de servidor, estamos especificamente nos referindo a erros do serviço que exibe páginas web e que no caso de servidores Linux, o mais comum, é o Apache.
Há ainda quem trate como erros de HTTP, que é o protocolo de comunicação usado neste serviço.
500 Erro interno de servidor (Internal Server Error)
É o erro mais comum e ocorre quando o servidor web não consegue processar uma solicitação realizada pelo site, cujas causas mais frequentes estão associadas às permissões de arquivos e pastas do site, versão da linguagem PHP, ou ainda instruções incorretas ou inadequadas contidas no arquivo .htaccess do site.
502 Bad Gateway
Este é um erro relacionado a um problema de rede, mais especificamente na comunicação entre dois pontos da rede, sendo um deles o servidor em que está o site e o outro, por exemplo, um servidor do seu provedor de acesso.
503 Service Unavailable (Serviço Indisponível)
Ocorre também quando o servidor não consegue responder a uma solicitação, mas pode também estar associada a sobrecarga.
Embora seja uma condição de erro que de fato representa um erro do servidor e não do site ou da rede, a causa pode não estar relacionada ao servidor propriamente dito, como nos casos em que um site está excedendo os recursos da conta de hospedagem, por ataque DDoS, por exemplo.
504 Gateway Timeout
É um erro menos comum de ocorrer, porém também pode acontecer.
Ao contrário do que muita gente imagina, é incomum ou raro que você faça um acesso direto a um servidor que hospeda um site, mas que em vez disso, utilize um outro servidor que funciona como um gateway (porta) ou proxy que direciona o tráfego de dados ao destino.
Quando o tempo que o gateway ou proxy têm para estabelecer essa “intermediação”, é excedido, o erro acontece.
505 HTTP Version not supported
Atualmente deve ser muito raro de se encontrar este tipo de erro, porém é possível, particularmente em acessos por equipamentos muito antigos e desatualizados.
Isso porque o erro de HTTP em questão, deve-se a versões antigas e inseguras do protocolo, que por sua vez pressupõe navegadores antigos.
Como resolver erros de servidor?
Antes de mais nada, é importante salientar que é essencial contar com backups atualizados sempre que se for fazer alterações no site e/ou nas suas configurações, visto que sempre se pode retornar a condição anterior ao erro, caso se faça uma alteração que não seja possível ou não se saiba como reverter.
Também é fundamental destacar, que como deve ter ficado claro, a depender do erro, uma lista extensa de possibilidades pode ter produzido o erro e, portanto, em diferentes casos será necessário realizar muitas verificações.
Em outras palavras, não haverá sempre apenas uma solução clara e única.
Tendo em mente tudo isso, vamos a algumas das soluções para os erros anteriormente apresentados.
Verificação do permissionamento
Esta é uma causa frequente de erros internos do servidor (erro 500).
Por padrão e por questões de segurança, o indicado é que arquivos tenham permissão 644 e pastas, 755.
Mesmo sendo pouco comum, alguns CMSs mudam as permissões padrão para algumas instalações, sem efetuar a reversão para o permissionamento original, após a conclusão do processo.
Eventualmente, alguns sistemas e protocolos de segurança, podem atribuir o permissionamento de pastas e arquivos para 000, de forma a proteger o conteúdo associado de acessos não autorizados ou maliciosos. Nessas condições, ocorrerá erro 500. Nesse caso específico, somente o suporte do hosting consegue reverter o permissionamento padrão.
Sendo assim, indicamos usar acesso SSH para verificar o permissionamento correto das pastas e arquivos da conta.
Arquivo .htaccess
Constitui outra causa frequente de erros.
O arquivo .htaccess costuma constar na pasta principal do site, mas também pode estar localizado em outras pastas e constitui um meio de configurar parâmetros do site e do ambiente da conta.
Ao realizar mudanças neste arquivo, renomeie o original para ter uma cópia inalterada dele e assim retornar ao padrão anterior à modificação rapidamente.
Certifique-se junto ao suporte do hosting, quanto possibilidade de configurar determinadas regras e configurações e se elas estão em conformidade com a política da empresa e com as configurações gerais do servidor.
Versão do PHP
Também é outro motivo comum de se ter erros HTTP, na medida em que a programação do site pode estar realizando requisições que são incompatíveis com a versão utilizada.
Resolve-se facilmente a questão, mudando-se a versão do PHP exigida pelo site ou CMS usado, diretamente no cPanel da conta.
Extensões do PHP
Assim como no caso da versão, determinados sites, frameworks e CMSs exigem que algumas extensões sejam ativadas para que a aplicação baseada no PHP, funcione corretamente.
A ausência de uma extensão exigida, produzirá erros, podendo ser tanto 500, como 503 em alguns casos especiais.
Também como no caso da versão do PHP, as extensões disponíveis podem ser rapidamente e facilmente ativadas via cPanel, sendo que se deve consultar a documentação da aplicação para saber quais são necessárias.
Tanto as extensões, como a versão do PHP, constituem os requisitos do sistema que mencionamos anteriormente.
Configurações do PHP
Como parte da versão do PHP e suas extensões, o cPanel também oferece a possibilidade de se configurar aspectos como memória (memory_limit), o tempo máximo de execução (max_execution_time), ou talvez o tamanho máximo permitido para o método POST (post_max_size), entre outros.
Configurações incorretas, geralmente inferiores aos limites mínimos exigidos pela aplicação ou mesmo ausência delas, geralmente acarreta erro 500, por falta de memória para execução de uma rotina, por exemplo.
Da mesma forma que a versão do PHP e as extensões necessárias, a configuração correta da aplicação, é informação que deve ser de responsabilidade do responsável técnico pelo site / aplicação.
ModSecurity
Como dito anteriormente, o ModSecurity – ModSec para os “íntimos” – é um módulo de segurança do Apache, cujo papel é a inclusão de regras de segurança para determinadas solicitações feitas por uma conta, bloqueando a execução do trecho de programação que não atende aos padrões e práticas adequadas.
O mais comum é se deparar com erros 500 (Internal Server Error), mas há algumas situações nas quais ocorre 503, quando há um serviço vinculado ao trecho falho de programação.
Nesse caso, há duas alternativas. Corrigir a programação correspondente, ou desativar a regra que acarreta erro, porém tendo-se em mente que ao fazê-lo, a segurança do site estará comprometida.
Firewall
Opções de segurança como o IPTables – que é um firewall – e o Imunify360, disponível para clientes HostMídia, são algumas das possíveis causas.
No primeiro caso, somente o suporte técnico da hospedagem pode verificar. No segundo, pode-se identificar se há alguma regra do Imunify360 que esteja acarretando o problema e efetuar a correção correspondente ou a liberação através do cPanel.
Em ambas as situações, ocorre erro 500 (Internal Server Error).
Outras situações
Seja qual for a situação, há algumas verificações que podem ser conduzidas e que algumas vezes nos dão pistas da origem do problema:
-
Logs – verifique os logs do sistema operacional. Alguns constam por padrão da sua conta e há outros que podem ser produzidos pelo CMS usado. Inclusive na opção de configurações do PHP, no cPanel, é possível habilitar – o que é recomendável – a gravação de logs de erros;
-
Plugins – plugins de CMSs podem – e frequentemente – produzem erros 500 ou 503, quando têm programação vulnerável ou requerem requisitos além dos estipulados pelo núcleo do CMS, que pode ser um WordPress, por exemplo. Desative os plugins um a um, para descobrir qual é o causador do erro;
-
Atualizações – atualizações de CMS ou da programação, podem produzir erros de servidor, porque a nova programação não atende os requisitos necessários (ex: versão do PHP, extensões e configurações). A resolução passa por verificar e configurar no painel de controle tais requisitos;
-
Estatísticas – contas de hospedagem tem limites de recursos e conforme mencionamos, se tais recursos são excedidos, o erro 500 ocorrerá nos momentos de mais acessos. Verifique as estatísticas de acesso para identificar se os picos de acesso coincidem com a ocorrência de erros;
-
Conflitos – ter diferentes sites / CMSs na mesma conta, especialmente sob um mesmo domínio, pode produzir um erro de servidor quando eles têm requisitos diferentes (ex: versão do PHP, extensões e configurações), gerando conflito.
Nos casos que não constam listados nos tópicos acima, é conveniente consultar o suporte técnico da sua empresa de hospedagem, a qual tem condição de verificar outras possibilidades para que o erro esteja ocorrendo e consequentemente a aplicação da solução indicada, ou talvez porque de fato há um problema no servidor e que está produzindo o erro.
Conclusão
Erros de servidor ocorrem na maior parte das vezes, devido a problemas de configuração ou ajustes no ambiente de hospedagem, de modo que o mesmo esteja compatível com as exigências que o site ou aplicação web necessitam para serem executados. Ter ciência dos requisitos necessários ao correto funcionamento do site, bem como saber os meios para configurar a conta corretamente, é o caminho para resolução de boa parte dos erros mais comuns.