0Pricing
PHP Academy · Lección

Tipos de errores y generación de informes en PHP

Comprenda los avisos, las advertencias y los errores fatales, además de los niveles de error_reporting.

Tipos de errores y generación de informes en PHP es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.

Tipos de errores de PHP

PHP tiene varios niveles de gravedad para los errores:

  • Notice — problema menor; la ejecución continúa
  • Warning — problema no fatal; la ejecución continúa
  • Fatal Error — la ejecución se detiene inmediatamente
  • Parse Error — error de sintaxis; se detiene antes de la ejecución
  • Deprecated — la funcionalidad se eliminará

error_reporting()

Controle qué errores informa PHP con 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 frente a log_errors

Configuraciones clave de php.ini para la gestión de errores:

  • display_errors = On — muestra los errores en el navegador (solo en desarrollo)
  • display_errors = Off — oculta los errores a los usuarios (producción)
  • log_errors = On — escribe los errores en el archivo error_log
  • error_log = /path/to/file — especifica la ubicación del registro

¡Nunca muestre errores a los usuarios en producción!

Provocar errores con trigger_error

Genere sus propios errores de PHP con 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

Controlador de errores personalizado

Registre su propio controlador de errores con 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);

Fuentes comunes de errores

Causas habituales de los errores de PHP:

  • Acceder a una clave de array no definida → Aviso
  • Llamar a una función que devuelve false y usar después el resultado → Advertencia
  • Llamar a una función no definida → Error fatal
  • Falta de punto y coma → Error de análisis
  • División entre cero → Advertencia (devuelve INF o NAN)

Operador de supresión de errores @

El operador @ suprime los errores de una sola expresión; evítelo y utilice una gestión de errores adecuada:

<?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 de PHP 8 y cambios en los errores

PHP 8 hizo más estricta la gestión de algunos errores:

  • Muchas advertencias se convirtieron en TypeError/ValueError
  • str_contains/starts_with/ends_with reemplaza a las expresiones regulares para comprobaciones simples
  • Pasar tipos de argumentos incorrectos lanza TypeError de forma predeterminada

ini_set en tiempo de ejecución

Modifique las configuraciones de php.ini en tiempo de ejecución:

<?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);
}

Comprobar el nivel de error

Detecte los niveles de error mediante 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';

Prácticas recomendadas para el registro de errores

Buenos hábitos para registrar errores:

  • Registre siempre los errores en producción
  • Incluya contexto: ID de usuario, URL de la solicitud y marca de tiempo
  • Utilice registros estructurados (JSON) para facilitar el análisis
  • Rote los archivos de registro para evitar llenar el disco
  • Supervise los registros con herramientas como ELK, Datadog o Papertrail

Comprobación rápida

¿Qué tipo de error de PHP detiene la ejecución inmediatamente?

Repaso: informes de errores de PHP

Aspectos esenciales de la gestión de errores:

  • Tipos de error: Aviso, Advertencia, Fatal, Análisis y Obsoleto
  • Establezca el nivel con error_reporting()
  • Desactive la visualización y active el registro en producción
  • Registre un controlador personalizado con set_error_handler()
  • Nunca suprima errores con @ en el código de producción

Preguntas frecuentes

¿La lección «Tipos de errores y generación de informes en PHP» es gratis?

Sí — el texto completo de «Tipos de errores y generación de informes en PHP» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Tipos de errores y generación de informes en PHP»?

Comprenda los avisos, las advertencias y los errores fatales, además de los niveles de error_reporting. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar PHP Academy?

No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Tipos de errores y generación de informes en PHP»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de PHP Academy?

Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Tipos de errores y generación de informes en PHP
  2. Try, Catch y Finally
  3. Creación de excepciones personalizadas
  4. Registro de errores y prácticas recomendadas
← Volver a PHP Academy