Como mostrar erros PHP para identificar problemas no seu site

Avatar

Redação

0 avaliações

10 de junho de 2019 às 5:13

Saber como ocultar e mostrar erros PHP ajuda muito no processo de desenvolvimento de um site.

Se você está criando ou configurando um site, você deve querer configurar o servidor para mostrar erros PHP para saber a origem desses erros e como consertá-los.

Mostrar erros PHP

Em muitos casos, as hospedagens de sites não habilitam a geração de logs de erros do PHP e não disponibilizam uma forma gráfica para ativar esses a geração dos registros de erros. Essa medida é para evitar que esses registros sejam gerados sem necessidade, já que muitas aplicações web já geram os próprios logs de erros e problemas.

Pensando nisto, elaboramos este breve artigo com um tutorial de como habilitar os logs de erro do PHP e identificar o que pode estar causando problemas em sua aplicação.

Como exibir erros PHP?

Exibir erros PHP

É possível exibir erros do PHP ao utilizando a função error_reporting. Esta função define quais erros serão reportados durante o desenvolvimento da aplicação.

A função error_reporting() configura a diretiva error_reporting durante a execução do PHP. Como o PHP tem vários níveis de erros, usando essa função é possível definir qual nível de erro será exibido.

Se um nível de erro não for definido na função, ela fica com o valor padrão que é nulo. Quando estiver dessa forma, a função só retornará a informação sobre qual nível de erro está configurado.

Alguns exemplos de como configurar a exibição dos erros do PHP:

<?php
// Desativa toda exibição de erros
error_reporting(0);

// Exibe erros simples
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Exibir E_NOTICE também pode ser bom para mostrar variáveis não iniciadas...
// ou com erros de digitação.
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Exibe todos os erros, exceto E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Exibe todos os erros PHP (see changelog)
error_reporting(E_ALL);

// Exibe todos os erros PHP
error_reporting(-1);

// Mesmo que error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

Para entender melhor quais as possibilidades de níveis de erro e o que eles representam, veja a tabela abaixo.

Valor Constante Descrição
1 E_ERROR (integer) Erros fatais de execução. Esses indicam erros que não podem ser recuperados, como erro de alocação de memória. A execução do script é interrompida.
2 E_WARNING (integer) Alertas de execução (erros não fatais). A execução do script não é interrompida.
4 E_PARSE (integer) Erros de análise no momento de compilação. Os erros de análise são gerados somente pelo analisador.
8 E_NOTICE (integer) Notificações de execução. Indica que o script encontrou algo que pode indicar um erro, mas também pode acontecer durante a execução normal do script.
16 E_CORE_ERROR (integer) Erros fatais que ocorrem durante a incialização do PHP. Esse é como um E_ERROR, só que gerado no núcleo do PHP.
32 E_CORE_WARNING (integer) Alertas (erros não fatais) que ocorrem durante a inicialização do PHP. É como um E_WARNING, só que gerado pelo núcleo do PHP.
64 E_COMPILE_ERROR (integer) Erros fatais de compilação. Como um E_ERROR, mas gerado pelo Zend Scripting Engine.
128 E_COMPILE_WARNING (integer) Alertas durante a compilação (erros não fatais). É como um E_WARNING, só que gerado pelo Zend Scripting Engine.
256 E_USER_ERROR (integer) Mensagem de erro gerada pelo usuário. É como um E_ERROR, mas gerado no código PHP usando a função PHP trigger_error().
512 E_USER_WARNING (integer) Mensagem de alerta gerada pelo usuário. É como um E_WARNING, mas gerado no código PHP usando a função PHP trigger_error().
1024 E_USER_NOTICE (integer) Mensagem de notificação gerada pelo usuário. É como uma E_NOTICE, mas gerada no código PHP usando a função PHP trigger_error().
2048 E_STRICT (integer) Habilita o PHP a sugerir mudanças em seu código para certificar a melhor interoperabilidade e compatibilidade do seu código.
4096 E_RECOVERABLE_ERROR (integer) Erro faltal "capturável" (com catch). Indica que provavelmente um erro perigoso aconteceu, mas não deixou a Engine em um estado inutilizável. Se o erro for pêgo por um handler definido por usuário, a aplicação aborta como se fosse um E_ERROR.
8192 E_DEPRECATED (integer) Notificação de execução. Habilite isto para receber alertas sobre códigos que não vão funcionar em versões futuras do PHP.
16384 E_USER_DEPRECATED (integer) Mensagem de alerta gerada pelo usuário. É como um E_DEPRECATED, mas é gerada no código PHP usandoa função trigger_error().
32767 E_ALL (integer) Todos os erros, alertas e notificações, exceto as do E_SCRIPT nas versões anteriores ao PHP 5.4.0.

Assim, você pode exibir os erros PHP de acordo com as necessidades da sua aplicação. É recomendável que habilita esse tipo de exibição de erros somente no ambiente de desenvolvimento ou no script específico em teste.

Habilitar logs de erros utilizando .htaccess

Grande maioria das hospedagens de sites utilizam o servidor web Apache, com isso, no diretório public_html, um arquivo .htaccess pode ser criado para definir regras para o servidor. Desta forma, é possível criar um arquivo .htaccess e definir a regra para que o PHP coloque os logs de erro em um arquivo.

Para fazer isso, basta criar um arquivo ".htaccess" (sem aspas) na pasta do site ou aplicação web, que geralmente é public_html, e adicionar as seguintes regras:

Mostrar erros PHP com .htaccess vazio

Se você ainda não tem um arquivo .htaccess e quer habilitar o relatório de erros do PHP, você pode criar um novo arquivo com nome .htaccess e incluir o seguinte conteúdo:

# Habilitar registro de erros do PHP
# php_flag indica que a geração de erros estará ativada
php_flag log_errors on
# php_value error_log erros_PHP.log indica que os logs serão registrados no arquivo erros_PHP.log, na mesma pasta da aplicação web/site
# você pode especificar um diretório específico, como /home/nomedousuario/public_html/erros_PHP.log
php_value error_log erros_PHP.log

Para desabilitar os logs de erros, basta alterar a regra php_flag log_errors on para php_flag log_errors off

Mostrar erros PHP com .htaccess do WordPress

Muitas aplicações web, como WordPress, já criam um arquivo .htaccess quando são instalados, que já aplica as regras essenciais para a plataforma. Nesses casos, basta adicionar a regra no fim do arquivo .htaccess. Segue um exemplo do .htaccess com a regra para registrar os erros num arquivo:

# BEGIN WordPress
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
 </IfModule>
 # END WordPress
# php_flag indica que a geração de erros estará ativada
php_flag log_errors on
# php_value error_log erros_PHP.log indica que os logs serão registrados no arquivo erros_PHP.log, na mesma pasta da aplicação web/site
# você pode especificar um diretório específico, como /home/nomedousuario/public_html/erros_PHP.log
php_value error_log erros_PHP.log

Pronto, os erros do servidor e do PHP causados pelo WordPress agora ficarão nesse arquivo. Para problemas específicos do WordPress, consulte a documentação da plataforma.

Editando o arquivo .htaccess

Os provedores de hospedagem geralmente permitem a edição de arquivos a partir do próprio gerenciador de arquivos do painel de hospedagem. Assim, você pode acessar o painel de controle e modificar o .htaccess de acordo com o que você deseja.

Editar o arquivo .htacces no gerenciador de arquivos

Você também pode criar e editar o arquivo .htaccess através do por meio do acesso via SSH, com um editor de texto como nano ou vi.

Outra forma seria baixar os arquivos via FTP, editá-los com seu editor de texto preferido e enviar novamente para o servidor de hospedagem. O FileZilla permite que você edite facilmente os arquivos que estão no servidor com o seu editor de texto de preferência, automatizando o processo de baixar e ter que enviar o arquivo novamente.

É importante que você evite que o arquivo com os logs sejam acessados por qualquer pessoa, por isso, é recomendado que acrescente também as seguintes regras:

# Evita que que o arquivo com logs erros_PHP seja acessado na Web
 <Files erros_PHP.log>
 Order allow,deny
 Deny from all
 Satisfy All
 </Files>

Como habilitar os logs de erros com php.ini

Algumas hospedagens permitem que você altere o arquivo php.ini, responsável pelas configurações do PHP no servidor de hospedagem. Desta forma, você também pode configurar para mostrar erros PHP ou para que os logs de erros sejam armazenados em um arquivo. A configuração é bem parecida com a configuração feita no .htaccess. Basta adicionar as seguintes linhas no arquivo:

display_errors = Off
log_errors = On
error_log = /caminho/para/pasta/erro_PHP.log

Para desabilitar o registro de erros para o arquivo, basta fazer como na etapa anterior, alterando a linha log_errors = On para log_errors = Off

Como verificar se o registro de erros está realmente ativo?

É importante verificar se as mudanças foram aplicadas e a geração de logs está realmente ativa. Para fazer isto, crie um arquivo "info.php" e colocar o seguinte código:

<?php phpinfo(); ?>

Depois, acesse esse arquivo pelo endereço do seu site, se o arquivo estiver na public_html, basta acessar: http://seudominio.com/info.php - basta buscar pelo nome do arquivo que você definiu para armazenar os erros:

Como mostrar erros PHP - PHP INFO

Você pode ver que ele está listado na configuração do PHP da sua hospedagem.

Como visualizar os erros da hospedagem no cPanel

Alguns painéis de controle de hospedagem oferecem uma opção para visualizar os erros do PHP e do servidor, você também pode tentar usar essa opção se ela estiver disponível.

No cPanel, você pode encontrar a opção "Erros" na seção "Métricas":

Como mostrar erros PHP - cPanel

Nesta tela você vai encontrar os registros de erros referentes ao usuário do cPanel. Os registros têm origem nos arquivos /usr/local/apache/logs/suexec_log file e /usr/local/apache/logs/error_log. Esta opção vai exibir os erros do Apache mais recentes da aplicação, para os registros mais antigos, consulte o seu provedor de hospedagem.

Como ocultar erros PHP?

Se você estiver tentando identificar algum problema com o seu site enquanto ele estiver online e sendo visitado, você não quer mostrar erros PHP para seus visitantes, certo? Logo, você pode configurar a sua hospedagem para não exibir os erros do PHP no seu site. Isso também pode ser feito pelo .htaccess, basta inserir as seguintes regras:

# Ocultar erros PHP
 php_flag display_startup_errors off
 php_flag display_errors off
 php_flag html_errors off

Alguns painéis de hospedagem permitem a configuração da exibição de erros facilmente pelo painel:

Como mostrar erros PHP - painel Hostinger

Por que mostrar erros PHP?

Mostrar erros PHP é bastante útil para descobrir os problemas no site ou na hospedagem, e como você pode ver, é bem simples configurar a sua hospedagem para armazenar esses registros.

Você já viu um erro HTTP como "erro 500" e ficou sem saber qual seria a origem do problema? É difícil saber exatamente onde está o problema apenas olhando o código, pode ser uma pequena falha na sintaxe, um módulo desativado, uma biblioteca faltando.

Enquanto verificar todos os arquivos e linhas de códigos do site seria algo inviável, você pode simplesmente consultar os logs do servidor. Os registros que vão te indicar onde está o problema e permitir que você tenha um ponto inicial para chegar na solução.

Está se você está tendo muitos erros em sua hospedagem atual, pode ser a hora de procurar uma alternativa. Confira as melhores hospedagens de sites e evite problemas na sua aplicação web!


Avatar
Redação

Melhor Hospedagem de Sites é um projeto com o objetivo de ajudar as pessoas na busca pelo lugar ideal para hospedar seus sites, trazendo informação e conhecimento sobre o universo de hospedagem de sites.


TOP 3 Provedores de Hospedagem
Hostinger logo
9.9 /10
GoDaddy logo
9.1 /10