die()
La función die() en PHP detiene la ejecución del script e imprime un mensaje opcional. Es equivalente a exit() y se usa para controlar errores.
Qué hace la función die()
La función die() detiene el script PHP justo donde se llama. Nada de lo que viene después se ejecuta: ninguna instrucción adicional, ninguna salida posterior, ningún bucle restante. Opcionalmente, imprime un mensaje (o devuelve un código de estado) en el momento en que se detiene.
die() es un alias de exit(): ambas son intercambiables byte a byte, aceptan el mismo argumento y se comportan de forma idéntica. PHP conserva ambos nombres porque die se lee de forma natural en código de "parar ante un error" (... or die(...)) mientras que exit se lee de forma natural cuando simplemente se quiere terminar un script. Usa el que haga más claro el código circundante; esta página usa die() en todo momento.
Sintaxis
die(string $message = "")
die(int $status = 0)die() acepta un argumento opcional, y lo que se pasa cambia su comportamiento:
- Un string — PHP imprime ese string y luego termina. Este es el caso más común.
- Un entero — PHP termina con ese valor como estado de salida y no imprime nada.
0significa éxito;1–254señalan un error al shell. Esto solo importa para scripts de línea de comandos (php script.php), donde otro programa lee$?para saber si el script tuvo éxito. - Nada — el script simplemente termina, sin salida y con un estado de salida de
0.
die() es una construcción del lenguaje, no una función regular, por lo que los paréntesis son opcionales (die; es válido). Incluirlos mantiene el código coherente con las llamadas a funciones normales.
Detener un script ante una condición fallida
El uso más frecuente de die() es salir en el momento en que algo va mal, para que el resto del script nunca se ejecute con datos incorrectos:
Como $name no es "Jane", el cuerpo del if se ejecuta, die() imprime Access denied! y el script termina inmediatamente — la línea echo nunca se alcanza. Si $name fuera "Jane", die() se omitiría y el script imprimiría Welcome, Jane! en su lugar.
El idioma "or die()"
die() se encadena frecuentemente a una expresión con or. PHP evalúa primero el lado izquierdo; solo si es falso (como false o null) continúa y ejecuta die(). Esta es la forma clásica de proteger una operación que puede fallar:
<?php
$file = fopen("missing-config.txt", "r") or die("Could not open the config file.");
echo "File opened successfully.";Si fopen() tiene éxito devuelve un manejador de archivo (verdadero), por lo que or die(...) nunca se alcanza. Si el archivo no existe, fopen() devuelve false, die() se ejecuta y el script se detiene antes del echo.
Este idioma es conciso, pero en código moderno es preferible usar un manejo de errores real — lanzar una excepción o registrar mediante error_log() — para que los fallos puedan ser capturados y reportados en lugar de matar abruptamente la solicitud. Consulta trigger_error() y error reporting para alternativas más limpias.
Estado de salida para scripts de línea de comandos
Cuando ejecutas PHP desde el terminal, el estado de salida le indica al shell o al pipeline de CI si el script funcionó correctamente:
<?php
$ok = false;
if (!$ok) {
fwrite(STDERR, "Job failed\n"); // write the message yourself...
die(1); // ...then exit with a non-zero status
}
die(0); // successPasar un entero a die() establece el estado pero no imprime nada, así que escribe cualquier mensaje legible por humanos tú mismo (aquí en STDERR) antes de salir. Un script envolvente puede entonces comprobar $? y reaccionar al 1.
Advertencias
die()no omite la limpieza registrada conregister_shutdown_function()— los callbacks de cierre y los destructores de objetos siguen ejecutándose. Pero el código escrito después de la llamada adie()nunca se ejecuta.- En una solicitud web,
die()termina toda la respuesta. La salida ya enviada al navegador permanece; todo lo que estaba en cola después de la llamada se descarta. Evítalo dentro de funciones destinadas a ser reutilizables — devuelve un valor o lanza una excepción en su lugar. - Un argumento entero no imprime nada.
die(1)no muestra1; si quieres que el usuario vea un mensaje, pasa un string o imprímelo antes de llamar adie(). - Prefiere las excepciones en el código de aplicación.
die()no puede capturarse, probarse fácilmente ni recuperarse de él. Resérvalo para scripts de nivel superior y diagnósticos rápidos.
Conclusión
die() (y su gemela exit()) termina un script PHP en el acto, imprimiendo opcionalmente un mensaje o estableciendo un estado de salida. Resulta ideal para protecciones rápidas en scripts independientes y de línea de comandos, pero para la lógica de aplicaciones en producción, apóyate en las excepciones y el manejo de errores adecuado para que los fallos sigan siendo capturables. Para profundizar en la escritura y estructuración de código que lo utiliza, consulta funciones PHP.