Como habilitar o relatório de erros do PHP

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.

Por que mostrar erros PHP?

Os servidores de aplicação possuem a opção de gerar relatório de erros para ajudar os usuários e desenvolvedores identificarem a origem de problemas em seus projetos. Com o servidor de hospedagem não é diferente, o servidor web está quase sempre armazenando os registros de erros em algum lugar do servidor, geralmente em um arquivo que o usuário não tem acesso.

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.

Os logs do servidor vão te indicar com precisão onde está o problema, para que você possa tenha um ponto inicial para encontrar a solução. Para ajudar nesta situação, é possível configurar a hospedagem para armazenar os registros de erro em um arquivo específico, que você possa acessar e visualizar quando quiser.

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.

ValorConstanteDescrição
1E_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.
2E_WARNING (integer)Alertas de execução (erros não fatais). A execução do script não é interrompida.
4E_PARSE (integer)Erros de análise no momento de compilação. Os erros de análise são gerados somente pelo analisador.
8E_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.
16E_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.
32E_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.
64E_COMPILE_ERROR (integer)Erros fatais de compilação. Como um E_ERROR, mas gerado pelo Zend Scripting Engine.
128E_COMPILE_WARNING (integer)Alertas durante a compilação (erros não fatais). É como um E_WARNING, só que gerado pelo Zend Scripting Engine.
256E_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().
512E_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().
1024E_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().
2048E_STRICT (integer)Habilita o PHP a sugerir mudanças em seu código para certificar a melhor interoperabilidade e compatibilidade do seu código.
4096E_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.
8192E_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.
16384E_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().
32767E_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 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

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.

Conclusão

Registrar ou 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. Sempre que ocorre algum problema com um site ou programa, é importante ver os erros gerados para entender melhor o que ocorre. A partir disso, você poderá pensar em uma solução para o problema.

No caso de problemas com JavaScript, você pode contar com as ferramentas de desenvolvimento do seu navegador. Entre as ferramentas, estão o console JavaScript e o Debugger, que podem ser bastante úteis para identificação de erros nos códigos de um site.

Está tendo problemas com sua hospedagem atual? Veja as melhores empresas de hospedagem em nosso ranking e confira as análises para encontrar uma alternativa!

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.
Receber novidades por email: