Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Procédure

Como depurar uma página em branco ou um erro 500

Quando tenta visitar um sítio Web e vê a mensagem de erro "500 Internal Server Error", isso significa que algo correu mal com o sítio Web. O erro pode ser particularmente frustrante, uma vez que pode não lhe dar qualquer informação sobre a causa específica do erro. Este artigo mostra-lhe como depurar um erro 500 no seu sítio Web.

Qual é a diferença entre uma página em branco e um erro 500?

Uma página em branco não é necessariamente um erro 500, e vice-versa. Um erro 500 significa que ocorreu um erro durante o processamento do pedido HTTP. Pode ser um erro na execução do script associado, um problema no acesso a um recurso, etc., que faz com que o servidor Web devolva uma resposta com o código de erro 500. Uma página em branco, por outro lado, significa que o servidor Web não devolveu quaisquer corpos na sua resposta, ou mesmo nenhuma resposta.

Nalgumas situações, um erro 500 significa que o servidor Web não tem resposta a dar e, por isso, provoca uma página em branco. É possível que isto aconteça quando não foi configurada uma página de erro 500, ou também se a saída de erro foi desactivada e, por isso, o site não tem qualquer mensagem de erro a mencionar.

Alguns browsers, como o Chrome e o Internet Explorer, apresentam a sua própria página de erro 500 quando recebem o código de erro do cabeçalho HTTP sem que o servidor forneça qualquer conteúdo no corpo da resposta:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Os erros 500 estão frequentemente associados a um problema com um dos ficheiros .htaccess que actuam no URL, ou a um erro de PHP. Assim, ao ativar a visualização de erros com a opção display_errors do php.ini, deverá ver aparecerem erros de PHP em vez do erro 500.

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Como é que posso saber se é um erro 500?

Para determinar se tem um erro 500, tem de ver o código de erro HTTP devolvido pelo servidor Web ao seu navegador Web. Este pode ser identificado através do separador "Rede" na consola de programação do seu navegador:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Como identificar os problemas que estão a causar o erro 500?

A primeira coisa a fazer é verificar os ficheiros de registo associados ao pedido HTTP: o ficheiro de registo do Apache e o ficheiro de registo do PHP. Os últimos 300 eventos que lhe dizem respeito no ficheiro de registo Apache podem ser consultados a partir do ícone "Erros" na sua interface cPanel, enquanto o ficheiro de registo PHP é geralmente o ficheiro "error_log" visível ao lado do ficheiro PHP em causa:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

No entanto, é possível que os erros não sejam apresentados nos registos. Isto pode ser o resultado de uma configuração que impede que os erros de PHP sejam apresentados e/ou registados. Saiba mais.

No entanto, se estiver a utilizar o WordPress, Prestashop ou Joomla, é muito possível que não sejam visíveis quaisquer alterações. Neste caso, terá deativar a apresentação de erros nos respectivos ficheiros de configuração .

Como ativar o modo de depuração do seu sítio?

A maioria dos CMS, como o WordPress, tem um sistema interno de tratamento de erros, que impede que os parâmetros PHP existentes sejam processados e actuem em função do erro encontrado. Ao ativar o modo de depuração, está a pedir a este sistema interno de gestão de erros que mostre os erros e/ou aumente a verbosidade dos ficheiros de registo.

Para ativar o modo de depuração, pode ligar-se diretamente ao"Gestor de ficheiros" acessível a partir da sua interface cPanel e editar o ficheiro de configuração associado para ativar este modo.

Como ativar o modo de depuração no WordPress?

Se o seu site foi criado com o WordPress, pode ativar o modo de depuração a partir do ficheiro"wp-config.php" na raiz do seu alojamento web. Para o fazer, basta alterar a constante"WP_DEBUG" para"true" em vez de"false".

Se desejar, pode também adicionar a constante WP_DEBUG_LOG para registar os erros no ficheiro"wp-content/debug.log".

Deve também verificar se a constante"WP_DEBUG_DISPLAY" não está definida no seu ficheiro de configuração. Se estiver, também terá de definir este valor como verdadeiro.

O ficheiro de configuração deve ter o seguinte aspeto:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Como posso ativar o modo de depuração no Prestashop?

No Prestashop, pode ativar o modo de depuração indo ao ficheiro"define.inc.php" na pasta"config".

Terá de alterar a declaração "_PS_MOD_DEV_" para"true" em vez de"false". Se necessário, pode também ativar o modo"_PS_DEBUG_PROFILING_", que lhe dará mais informações.

O ficheiro de configuração deve ter o seguinte aspeto:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Como posso ativar o modo Debug no Joomla?

No Joomla, pode ativar o modo de depuração editando o ficheiro configuration.php. Neste ficheiro, é necessário alterar a variável"$debug" para 1 para o ativar. Também precisa de alterar a variável $error_reporting para"maximum" para que todos os erros sejam apresentados.

O ficheiro de configuração deve ter o seguinte aspeto:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Como posso ativar o modo de depuração noutro CMS?

É possível que esteja a utilizar outro CMS. Para saber como ativar o modo de depuração, pode também escrever"Nome do CMS + Depuração" no motor de busca. Isto deve levá-lo diretamente a um tutorial que explica como ativar este modo.

Compreender os diferentes erros do PHP

É relativamente fácil compreender a origem de um erro 500, uma vez que são muitas vezes os mesmos erros que se repetem.

1. O primeiro e mais comum erro é o"Parse error". Este erro indica frequentemente um problema de sintaxe (um erro na programação do seu código). O erro é definido da seguinte forma:

  • Parse Error: define que se trata de um erro de código
  • É apresentada uma mensagem em inglês para fornecer mais informações sobre o tipo de erro
  • O caminho para o ficheiro em que o erro ocorre e a linha afetada pelo erro.

Se tomarmos como exemplo o ficheiro index.php do nosso sítio Wordpress, onde falta um ponto e vírgula no final da linha 17, o ficheiro Web onde se encontra o erro é o seguinte

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

O erro visível quando se acede ao URL será o seguinte:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

2. O erro"Parse error: syntax error, unexpected end of file" indica que parece faltar algo no final do ficheiro.

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Neste código, por exemplo, falta a chave que fecha a instrução if.

3. O erro " Parse Error: syntax error, unexpected (T_STRING), expecting ','or'; " deve-se frequentemente a um erro relacionado com as aspas no seu código.

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Neste código, falta a barra invertida na palavra"error", como no código seguinte, para que funcione:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

4. Também pode ver um"Fatal Error". Este é um dos erros mais graves que pode encontrar. Também provoca a paragem do script. É definido da seguinte forma:

  • Erro Fatal: Esta mensagem indica que o erro é fatal e impede a execução do seu script.
  • Mensagem: Uma mensagem segue-se ao código "Erro fatal" para explicar o motivo do erro.
  • Caminho de acesso: são indicados o caminho de acesso e a linha que está a causar o problema.

Este erro indica frequentemente que uma função não foi definida, como no código seguinte:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

Por conseguinte, aparece o seguinte erro: Fatal Error: Uncaught Error: Call to undefined function

Este erro deve-se frequentemente a uma das seguintes situações:

  • Tem um erro de digitação na função que definiu
  • O ficheiro PHP que contém a função não foi carregado no seu script
  • Se a função fizer parte de uma extensão PHP, a extensão PHP pode não ter sido carregada.

5. Poderá obter um erro"Fatal Error: cannot redeclare" indicando que a função foi definida uma segunda vez. O código poderia ter o seguinte aspeto:

Diagnosticar e corrigir um erro 500 num site alojado no cPanel

É perfeitamente possível evitar este erro:

  • alterando o nome da função redefinida
  • Também pode ser um problema de espaço de nomes. Neste caso, é necessário verificar o espaço de nomes e indicar o caminho de acesso completo à função.

6. Pode receber o erro"Fatal Error: allowed memory size exhausted".

Isto indica que o script PHP está a utilizar demasiada RAM e excede o valor máximo autorizado em PHP.INI. Este é o valor "memory_limit". Pode alterar este valor nas fórmulas do cPanel. Se, apesar de aumentar o valor para um nível suficientemente elevado, o problema persistir, pode ser que uma operação que consome muita memória esteja a ser repetida demasiadas vezes (ou mesmo ad infinitum) no seu script PHP. Os loops infinitos também são possíveis causas deste tipo de erro.

7. O erro"Fatal Error: Maximum execution time exceeded" significa que o tempo de execução do seu script foi excedido. Você pode modificar o valor"max_execution_time" na sua configuração PHP.INI. Note, no entanto, que qualquer processo a correr durante mais de 490 segundos não é permitido nos nossos pacotes de alojamento partilhado cPanel, mas, acima de tudo, se uma página necessitar de um max_execution_time mais elevado, isso significaria também que carregaria mais lentamente, o que geralmente não é desejável. Se a página que gerou este erro processar muitos dados, aconselhamo-lo a efetuar um processamento em lote. Por exemplo, em vez de processar 1000 produtos de cada vez que a página é aberta, seria mais adequado processar lotes de 100 produtos, utilizando pedidos AJAX, por exemplo. E obterá um TTFB (Time-To-First-Byte) mais baixo.

8. O erro"Fatal error: Uncaught Error: Call to undefined function mysql_connect()" significa que o módulo"mysql" não está carregado na versão do PHP que está a utilizar. O erro ocorre quando:

  • É utilizada a versão 7 ou superior do PHP, mas o seu sítio não é compatível com esta versão
  • Está a utilizar uma versão PHP5 mas o módulo "MySQL" não está ativado

Pode alterar facilmente a versão do PHP indo a"Selecionar uma versão do PHP" na sua interface cPanel.

9. O erro"Permission denied" significa que o PHP não tem direitos de acesso a um determinado ficheiro ou pasta. Este erro pode ser visto frequentemente da seguinte forma:

Warning file_put_contacts(/home/c123456/public_html/dossier/file.php): failed to open stream: Permission denied in /home/c123456/index.php on line 20

Neste caso, é necessário verificar os chmods nos seus ficheiros e pastas. Em princípio, os chmods são os seguintes:

  • 644 : para um ficheiro
  • 755 : para uma pasta

10. O erro"No such file or directory" indica que o PHP precisa de incluir um ficheiro que não parece estar presente no seu espaço FTP. O erro representa o seguinte:

Warning: require_once(/home/c123456/public_html/dossier/fichier.php): failed to open stream: No such file or directory in /home/c123456/public_html/index.php on line 20

Neste caso, é necessário :

  • Verificar se o ficheiro em questão existe no seu espaço FTP. Se não for esse o caso, terá de voltar a carregar o ficheiro.
  • Verificar se tem os direitos correctos sobre o ficheiro, ou seja, CHMOD. As pastas são geralmente chmod 755 e os ficheiros são chmod 644.
  • Verifique se o caminho indicado no seu script PHP é o correto.

11. Poderá ver o erro"Warning:session_start(): Cannot send session cookie headers already sent", o que indica que já foi gerado um fluxo e que, por conseguinte, já não é possível utilizar a função"session_start". Este erro pode ser visto da seguinte forma:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/c123456/public_html/dossier/session.php:2 in /home/c123456/public_html/dossier/session.php on line 20

As 3 causas possíveis para este erro são as seguintes

  • uma diretiva que apresenta texto antes de a função ser chamada
  • Um problema de conjunto de caracteres (em especial BOM_UTF8). Este erro ocorre sempre na primeira linha do seu código
  • Caracteres invisíveis no ecrã, mas que estão presentes nos ficheiros. Os editores de código, como o Visual Studio Code, permitem-lhe ver estes erros.

Conclusão

Está agora em condições de saber a razão de um erro 500 ou de uma página em branco. Também pode solucionar problemas no seu sítio Web.

Não hesite em colocar quaisquer questões ou fazer quaisquer comentários que possa ter.

Avaliar este artigo :

2,5/5 | 2 opinião

Este artigo foi útil para si ?

Article utileSim

Article non utileNão

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.

Pour toute question non liée à cette documentation ou problème technique sur l'un de vos services, contactez le support commercial ou le support technique

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Artigos semelhantes

3mn leitura

Wordpress no cPanel: Como resolver o problema da página branca ou do erro 500

1mn leitura

Como ver os ficheiros de registo do Apache e do PHP no cPanel

0mn leitura

Como é que corrijo um erro 403 Forbidden no cPanel?

0mn leitura

Como é que corrijo um erro 404 no cPanel?


Fazer uma pergunta à equipa do LWS e à sua comunidade