W3docs

exit()

La función exit() en PHP detiene el script actual de inmediato y devuelve un código de salida especificado. Resulta útil en ciertas situaciones.

Qué hace la función exit()

La función exit() en PHP detiene el script actual justo en el punto donde se llama. No se ejecuta ningún código adicional después de ella — el script termina de inmediato. Se usa principalmente para detener la ejecución tras una redirección, cuando se detecta una condición fatal, o para imprimir un mensaje final antes de salir.

exit es una construcción del lenguaje, no una función normal, por lo que los paréntesis son opcionales: exit; y exit(); funcionan igual. die() es un alias exacto de exit() — se comportan de forma idéntica, y cuál usar es puramente una cuestión de estilo. Consulta el capítulo sobre die() para más información sobre el alias.

Esta página explica qué hace exit(), la diferencia entre sus argumentos de estado y mensaje, los códigos de salida que devuelve al shell y los errores comunes que se deben evitar.

Sintaxis y el argumento opcional

exit(int|string $status = 0): never

exit() acepta un único argumento opcional que puede ser un entero o un string, y ambos se tratan de forma muy diferente:

  • Entero — se usa como el estado de salida del proceso (0–254). No se imprime. Por convención, 0 significa éxito y cualquier valor distinto de cero señala un error. Esto importa cuando un script se ejecuta desde la línea de comandos y otro programa inspecciona su código de salida.
  • String — se imprime justo antes de que el script termine; el estado de salida es 0. Resulta útil para mostrar un mensaje de error final.

Si llamas a exit() sin argumento, el script termina con estado 0 y no imprime nada.

Imprimir un mensaje antes de salir

Cuando pasas un string, PHP lo imprime y luego se detiene:

<?php

$config = @file_get_contents('config.ini');

if ($config === false) {
    exit("Fatal: config.ini could not be read.\n");
}

echo "Config loaded.\n";

Si el archivo no existe, el script imprime Fatal: config.ini could not be read. y el echo final nunca se ejecuta.

Devolver un código de salida al shell

Cuando pasas un entero, no se imprime nada, pero el valor se convierte en el código de salida del proceso — útil para scripts ejecutados desde la terminal o una pipeline de CI:

<?php

$ok = false; // pretend a check failed

if (!$ok) {
    exit(1); // non-zero = failure
}

exit(0); // success

Al ejecutar esto con php script.php y luego echo $? en el shell, se imprimirá 1. Un programa que llame al script puede tomar decisiones según ese código sin necesidad de analizar ninguna salida.

Detener un script tras una redirección

El caso de uso web clásico es garantizar que no se ejecute más código después de enviar una cabecera Location:

<?php

if (!isset($_SESSION['user'])) {
    header('Location: login.php');
    exit();
}

// Protected code below only runs for logged-in users.

Sin exit(), PHP seguiría ejecutando las líneas después de la redirección — lo que podría filtrar contenido protegido a un usuario que debería haber sido enviado a la página de inicio de sesión. Consulta header() y Sesiones PHP para conocer los componentes en los que se basa este fragmento.

Errores comunes

  • exit() ejecuta las funciones de apagado y los destructores de objetos, pero no vacía un búfer de salida iniciado con ob_start() si se sale a mitad del búfer en configuraciones antiguas — cierra los búferes explícitamente cuando sea necesario.
  • Los códigos de estado superiores a 254 están reservados. Usa 0–254; 255 es usado internamente por PHP.
  • No uses exit() como flujo de control normal. Dentro de las funciones, devuelve un valor o lanza una excepción para que el código que llama pueda reaccionar. Un exit() enterrado en una función hace que el código sea difícil de probar, porque mata todo el proceso en lugar de solo la llamada.
  • Un argumento string no es un código de error. exit("5") imprime 5 y sale con estado 0, mientras que exit(5) sale con estado 5 y no imprime nada.

Resumen

exit() (y su alias die()) termina un script PHP de inmediato. Pasa un entero para establecer el estado de salida del shell, o un string para imprimir un mensaje final. Es ideal para detener la ejecución tras una redirección o ante un error irrecuperable, pero para el flujo ordinario es preferible usar if/else, valores de retorno y excepciones para que el código sea más fácil de probar.

Práctica

Práctica
¿Qué hace la función exit() de PHP?
¿Qué hace la función exit() de PHP?
Was this page helpful?