0Pricing
PHP Academy · Aula

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 erros
  • error_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_WARNING

Manipulador 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_with substituem 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

  1. Tipos e relatórios de erros do PHP
  2. Try, Catch e Finally
  3. Criação de exceções personalizadas
  4. Registro de erros e boas práticas
← Voltar para PHP Academy