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_logerror_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_WARNINGControlador 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_withreemplaza 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
- Tipos de errores y generación de informes en PHP
- Try, Catch y Finally
- Creación de excepciones personalizadas
- Registro de errores y prácticas recomendadas