Tipos e relatórios de erros do PHP
Entenda avisos, advertências e erros fatais, além dos níveis de error_reporting.
Tipos e relatórios de erros do PHP é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
Tipos de erros do PHP
O PHP tem vários níveis de gravidade para os erros:
- Aviso — problema menor; a execução continua
- Advertência — problema não fatal; a execução continua
- Erro fatal — a execução é interrompida imediatamente
- Erro de análise — erro de sintaxe; interrompe antes da execução
- Obsoleto — o recurso será removido
error_reporting()
Controle quais erros o PHP relata com error_reporting():
<?php
// Show all errors (development)
error_reporting(E_ALL);
// Hide notices and deprecated
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
// Production: no display, log to file
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');display_errors versus log_errors
Principais configurações do php.ini para o tratamento de erros:
display_errors = On— exibe os erros no navegador (somente em desenvolvimento)display_errors = Off— oculta os erros dos usuários (produção)log_errors = On— grava os erros no arquivo de registro de erroserror_log = /path/to/file— especifica o local do registro
Nunca exiba erros aos usuários em produção!
Acionando erros com trigger_error
Gere seus próprios erros do PHP com trigger_error():
<?php
function divide(int $a, int $b): float {
if ($b === 0) {
trigger_error('Division by zero', E_USER_WARNING);
return 0.0;
}
return $a / $b;
}
echo divide(10, 0); // triggers E_USER_WARNINGManipulador de erros personalizado
Registre seu próprio manipulador de erros com set_error_handler():
<?php
set_error_handler(function(int $errno, string $errstr, string $file, int $line): bool {
$message = "[$errno] $errstr in $file:$line";
error_log($message);
if ($errno === E_USER_ERROR) {
http_response_code(500);
die('Internal error — please try again later');
}
return true; // don't execute PHP internal error handler
});
trigger_error('Custom error message', E_USER_ERROR);Fontes comuns de erros
Causas típicas de erros do PHP:
- Acessar uma chave de matriz indefinida → Notificação
- Chamar uma função que retorna falso e depois usar o resultado → Aviso
- Chamar uma função indefinida → Erro fatal
- Ponto e vírgula ausente → Erro de análise
- Divisão por zero → Aviso (retorna INF ou NAN)
Operador de supressão de erros @
O operador @ suprime os erros de uma única expressão — evite-o e use um tratamento adequado de erros:
<?php
// Bad: hides errors silently
$result = @file_get_contents('missing.txt');
// Good: check explicitly
$result = file_get_contents('missing.txt');
if ($result === false) {
// handle the error
echo 'File not found';
}JIT do PHP 8 e mudanças nos erros
O PHP 8 tornou o tratamento de alguns erros mais rigoroso:
- Muitos avisos foram convertidos em TypeError/ValueError
str_contains/starts_with/ends_withsubstituem expressões regulares para verificações simples- Passar tipos de argumentos incorretos lança TypeError por padrão
ini_set em tempo de execução
Substitua as configurações do php.ini em tempo de execução:
<?php
// Display errors during development
if (getenv('APP_ENV') === 'development') {
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
} else {
ini_set('display_errors', '0');
ini_set('log_errors', '1');
error_reporting(E_ALL);
}Verificando o nível de erro
Detecte os níveis de erro com o operador AND bit a bit:
<?php
$level = error_reporting();
if ($level & E_NOTICE) {
echo 'Notices are reported';
}
if ($level & E_WARNING) {
echo 'Warnings are reported';
}
// Check specific error types
echo (E_ALL & E_NOTICE) ? 'E_ALL includes E_NOTICE' : 'no';Boas práticas de registro de erros
Bons hábitos para o registro de erros:
- Sempre registre os erros em produção
- Inclua o contexto: ID do usuário, URL da requisição, marca de tempo
- Use registros estruturados (JSON) para facilitar a análise
- Faça a rotação dos arquivos de registro para evitar que o disco fique cheio
- Monitore os registros com ferramentas como ELK, Datadog ou Papertrail
Verificação rápida
Qual tipo de erro do PHP interrompe a execução imediatamente?
Recapitulação: registro de erros do PHP
Essenciais do tratamento de erros:
- Tipos de erro: Notificação, Aviso, Fatal, Análise e Obsoleto
- Defina o nível com
error_reporting() - Exibição desativada + registro ativado em produção
- Registre um manipulador personalizado com
set_error_handler() - Nunca suprima erros com
@no código de produção
Perguntas Frequentes
A aula “Tipos e relatórios de erros do PHP” é grátis?
Sim — o texto completo de “Tipos e relatórios de erros do PHP” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “Tipos e relatórios de erros do PHP”?
Entenda avisos, advertências e erros fatais, além dos níveis de error_reporting. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Tipos e relatórios de erros do PHP”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Tipos e relatórios de erros do PHP
- Try, Catch e Finally
- Criação de exceções personalizadas
- Registro de erros e boas práticas