W3docs

exit()

La fonction exit() en PHP arrête immédiatement le script en cours et retourne un code de sortie spécifié.

Ce que fait la fonction exit()

La fonction exit() en PHP arrête le script en cours là où elle est appelée. Aucun code ne s'exécute après — le script se termine immédiatement. Elle est le plus souvent utilisée pour interrompre l'exécution après une redirection, lorsqu'une condition fatale est détectée, ou pour afficher un message final avant de quitter.

exit est une construction du langage, et non une fonction ordinaire, donc les parenthèses sont facultatives : exit; et exit(); fonctionnent tous les deux. die() est un alias exact de exit() — ils se comportent de manière identique, et le choix entre les deux est purement stylistique. Consultez le chapitre die() pour plus d'informations sur cet alias.

Cette page explique ce que fait exit(), la différence entre ses arguments status et message, les codes de sortie qu'elle retourne au shell, et les erreurs courantes à éviter.

Syntaxe et l'argument facultatif

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

exit() accepte un seul argument facultatif qui peut être soit un entier soit une string, et les deux sont traités très différemment :

  • Entier — utilisé comme code de sortie du processus (0–254). Il n'est pas affiché. Par convention, 0 signifie un succès et toute valeur non nulle signale une erreur. Cela est important lorsqu'un script est exécuté en ligne de commande et qu'un autre programme inspecte son code de sortie.
  • Stringaffiché juste avant la fin du script, puis le code de sortie est 0. C'est pratique pour afficher un message d'erreur final.

Si vous appelez exit() sans argument, le script se termine avec le code 0 et n'affiche rien.

Afficher un message avant de quitter

Lorsque vous passez une string, PHP l'affiche puis s'arrête :

<?php

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

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

echo "Config loaded.\n";

Si le fichier est absent, le script affiche Fatal: config.ini could not be read. et le echo final ne s'exécute jamais.

Retourner un code de sortie au shell

Lorsque vous passez un entier, rien n'est affiché mais la valeur devient le code de sortie du processus — utile pour les scripts exécutés depuis le terminal ou un pipeline CI :

<?php

$ok = false; // pretend a check failed

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

exit(0); // success

Exécuter ce script avec php script.php puis echo $? dans le shell afficherait 1. Un programme appelant peut agir en fonction de ce code sans analyser aucune sortie.

Arrêter un script après une redirection

Le cas d'utilisation web classique consiste à garantir qu'aucun code supplémentaire ne s'exécute après l'envoi d'un en-tête Location :

<?php

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

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

Sans le exit(), PHP continuerait à exécuter les lignes après la redirection — risquant de laisser fuiter une sortie protégée vers un utilisateur qui aurait dû être redirigé vers la page de connexion. Consultez header() et les Sessions PHP pour les éléments dont dépend cet extrait.

Pièges courants

  • exit() exécute les fonctions de fermeture et les destructeurs d'objets, mais elle ne vide pas un tampon de sortie démarré avec ob_start() si vous quittez en cours de tampon dans les anciennes configurations — fermez les tampons explicitement lorsque cela importe.
  • Les codes de statut supérieurs à 254 sont réservés. Utilisez 0–254 ; 255 est utilisé en interne par PHP.
  • N'utilisez pas exit() comme contrôle de flux normal. Dans les fonctions, retournez une valeur ou levez une exception pour que l'appelant puisse réagir. Un exit() enfoui dans une fonction rend le code difficile à tester, car il tue l'intégralité du processus au lieu d'uniquement l'appel.
  • Un argument string n'est pas un code d'erreur. exit("5") affiche 5 et quitte avec le code 0, tandis que exit(5) quitte avec le code 5 et n'affiche rien.

Résumé

exit() (et son alias die()) met fin immédiatement à un script PHP. Passez un entier pour définir le code de sortie du shell, ou une string pour afficher un message final. Elle est idéale pour s'arrêter après une redirection ou en cas d'erreur irrécupérable, mais pour les branchements ordinaires, préférez if/else, les valeurs de retour et les exceptions afin que votre code reste testable.

Pratique

Pratique
Que fait la fonction PHP exit() ?
Que fait la fonction PHP exit() ?
Was this page helpful?