exit()
Die Funktion exit() in PHP beendet das aktuelle Skript sofort und gibt einen angegebenen Exit-Code zurück.
Was die Funktion exit() bewirkt
Die Funktion exit() in PHP stoppt das aktuelle Skript genau an der Stelle, an der sie aufgerufen wird. Danach wird kein weiterer Code mehr ausgeführt — das Skript endet sofort. Sie wird am häufigsten verwendet, um die Ausführung nach einer Weiterleitung zu stoppen, wenn ein schwerwiegender Fehler erkannt wurde, oder um eine abschließende Meldung auszugeben, bevor das Skript beendet wird.
exit ist ein Sprachkonstrukt und keine reguläre Funktion, daher sind die Klammern optional: exit; und exit(); funktionieren beide. die() ist ein exaktes Alias von exit() — sie verhalten sich identisch, und welches Sie verwenden, ist reine Geschmackssache. Weitere Informationen zum Alias finden Sie im Kapitel zu die().
Diese Seite beschreibt, was exit() tut, den Unterschied zwischen den Argumenten status und message, die an die Shell zurückgegebenen Exit-Codes und häufige Fehler, die vermieden werden sollten.
Syntax und das optionale Argument
exit(int|string $status = 0): neverexit() akzeptiert ein einzelnes optionales Argument, das entweder ein Integer oder ein string sein kann, und die beiden werden sehr unterschiedlich behandelt:
- Integer — wird als Prozess-Exit-Status (0–254) verwendet. Er wird nicht ausgegeben. Gemäß Konvention bedeutet
0Erfolg, und jeder Wert ungleich null signalisiert einen Fehler. Dies ist wichtig, wenn ein Skript über die Befehlszeile ausgeführt wird und ein anderes Programm seinen Exit-Code prüft. - String — wird ausgegeben, kurz bevor das Skript endet; danach ist der Exit-Status
0. Dies ist praktisch, um eine abschließende Fehlermeldung anzuzeigen.
Wenn Sie exit() ohne Argument aufrufen, endet das Skript mit Status 0 und gibt nichts aus.
Eine Meldung vor dem Beenden ausgeben
Wenn Sie einen string übergeben, gibt PHP ihn aus und hält dann an:
<?php
$config = @file_get_contents('config.ini');
if ($config === false) {
exit("Fatal: config.ini could not be read.\n");
}
echo "Config loaded.\n";Wenn die Datei fehlt, gibt das Skript Fatal: config.ini could not be read. aus, und das abschließende echo wird nie ausgeführt.
Einen Exit-Code an die Shell zurückgeben
Wenn Sie einen Integer übergeben, wird nichts ausgegeben, aber der Wert wird zum Prozess-Exit-Code — nützlich für Skripte, die im Terminal oder in einer CI-Pipeline ausgeführt werden:
<?php
$ok = false; // pretend a check failed
if (!$ok) {
exit(1); // non-zero = failure
}
exit(0); // successWenn Sie dieses Skript mit php script.php ausführen und anschließend echo $? in der Shell eingeben, wird 1 ausgegeben. Ein aufrufendes Programm kann auf Basis dieses Codes verzweigen, ohne eine Ausgabe parsen zu müssen.
Ein Skript nach einer Weiterleitung stoppen
Der klassische Web-Anwendungsfall besteht darin, sicherzustellen, dass nach dem Senden eines Location-Headers kein weiterer Code ausgeführt wird:
<?php
if (!isset($_SESSION['user'])) {
header('Location: login.php');
exit();
}
// Protected code below only runs for logged-in users.Ohne das exit() würde PHP weiterhin die Zeilen nach der Weiterleitung ausführen — und möglicherweise geschützte Ausgaben an einen Benutzer weitergeben, der zur Login-Seite weitergeleitet werden sollte. Weitere Informationen zu den Bausteinen dieses Codeausschnitts finden Sie unter header() und PHP Sessions.
Häufige Fallstricke
exit()führt Shutdown-Funktionen und Objekt-Destruktoren aus, jedoch leert es keinen mitob_start()gestarteten Ausgabepuffer, wenn Sie mitten in einem Puffer beenden — in älteren Umgebungen sollten Sie Puffer explizit schließen, wenn es darauf ankommt.- Status-Codes über 254 sind reserviert. Verwenden Sie
0–254;255wird intern von PHP verwendet. - Verwenden Sie
exit()nicht als normale Ablaufsteuerung. Innerhalb von Funktionen sollten Sie einen Wert zurückgeben oder eine Ausnahme auslösen, damit der Aufrufer reagieren kann. Einexit(), das in einer Funktion vergraben ist, macht Code schwer testbar, da es den gesamten Prozess beendet anstatt nur den Aufruf. - Ein string-Argument ist kein Fehlercode.
exit("5")gibt5aus und beendet das Skript mit Status0, währendexit(5)mit Status5beendet und nichts ausgibt.
Zusammenfassung
exit() (und sein Alias die()) beendet ein PHP-Skript sofort. Übergeben Sie einen Integer, um den Shell-Exit-Status festzulegen, oder einen string, um eine abschließende Meldung auszugeben. Es eignet sich ideal zum Stoppen nach einer Weiterleitung oder bei einem nicht behebbaren Fehler. Für normale Verzweigungen sollten Sie jedoch if/else, Rückgabewerte und Ausnahmen bevorzugen, damit Ihr Code testbar bleibt.