die()
Die Funktion die() in PHP gibt eine Meldung aus und beendet die aktuelle Skriptausführung. Sie ist im Wesentlichen identisch mit der Funktion exit().
Was die Funktion die() bewirkt
Die Funktion die() stoppt das PHP-Skript genau dort, wo sie aufgerufen wird. Nichts danach wird ausgeführt — keine weiteren Anweisungen, keine weitere Ausgabe, keine verbleibenden Schleifen. Optional gibt sie beim Anhalten eine Meldung aus (oder liefert einen Statuscode zurück).
die() ist ein Alias von exit(): Beide sind byteweise austauschbar, nehmen dasselbe Argument entgegen und verhalten sich identisch. PHP behält beide Namen, weil die im Kontext von "Bei Fehler abbrechen"-Code natürlich lesbar ist (... or die(...)) und exit dann passt, wenn man ein Skript schlicht beenden möchte. Verwenden Sie, was den umgebenden Code klarer macht; auf dieser Seite wird durchgehend die() verwendet.
Syntax
die(string $message = "")
die(int $status = 0)die() akzeptiert ein optionales Argument, und was Sie übergeben, ändert das Verhalten:
- Ein string — PHP gibt diesen string aus und beendet dann das Skript. Das ist der häufigste Anwendungsfall.
- Eine ganze Zahl — PHP beendet das Skript mit diesem Wert als Exit-Status und gibt nichts aus.
0bedeutet Erfolg;1–254signalisiert der Shell einen Fehler. Das ist nur bei Kommandozeilenskripten relevant (php script.php), bei denen ein anderes Programm$?liest, um zu erfahren, ob das Skript erfolgreich war. - Kein Argument — das Skript endet einfach, ohne Ausgabe und mit dem Exit-Status
0.
die() ist ein Sprachkonstrukt, keine reguläre Funktion, daher sind die Klammern optional (die; ist gültig). Sie einzuschließen hält den Code konsistent mit normalen Funktionsaufrufen.
Ein Skript bei einer fehlgeschlagenen Bedingung stoppen
Der häufigste Einsatz von die() ist das sofortige Abbrechen, sobald etwas nicht stimmt, damit der Rest des Skripts nie mit ungültigen Daten ausgeführt wird:
Da $name nicht "Jane" ist, wird der if-Block ausgeführt, die() gibt Access denied! aus und das Skript endet sofort — die echo-Zeile wird nie erreicht. Wäre $name gleich "Jane", würde die() übersprungen und das Skript würde stattdessen Welcome, Jane! ausgeben.
Das "or die()"-Idiom
die() wird häufig mit or an einen Ausdruck gekettet. PHP wertet zuerst die linke Seite aus; nur wenn diese falsy ist (z. B. false oder null), fährt es fort und führt die() aus. Das ist die klassische Methode, um eine Operation abzusichern, die fehlschlagen kann:
<?php
$file = fopen("missing-config.txt", "r") or die("Could not open the config file.");
echo "File opened successfully.";Wenn fopen() erfolgreich ist, gibt es ein Datei-Handle zurück (truthy), sodass or die(...) nie erreicht wird. Wenn die Datei fehlt, gibt fopen() false zurück, die() wird ausgeführt und das Skript stoppt vor dem echo.
Dieses Idiom ist prägnant, aber im modernen Code sollte echtes Fehlerbehandlung bevorzugt werden — das Werfen einer Exception oder das Protokollieren über error_log() — damit Fehler abgefangen und gemeldet werden können, anstatt die Anfrage abrupt zu beenden. Siehe trigger_error() und Fehlerberichterstattung für sauberere Alternativen.
Exit-Status für Kommandozeilenskripte
Wenn Sie PHP vom Terminal aus ausführen, teilt der Exit-Status der aufrufenden Shell oder CI-Pipeline mit, ob das Skript erfolgreich war:
<?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); // successDas Übergeben einer ganzen Zahl an die() setzt den Status, gibt aber nichts aus — schreiben Sie daher jede für Menschen lesbare Meldung selbst (hier an STDERR), bevor Sie beenden. Ein umgebendes Skript kann dann $? prüfen und auf die 1 reagieren.
Fallstricke
die()überspringt keine Bereinigung, die Sie mitregister_shutdown_function()registriert haben — Shutdown-Callbacks und Objektdestruktoren werden weiterhin ausgeführt. Aber Code, der nach demdie()-Aufruf steht, wird nie ausgeführt.- Bei einer Web-Anfrage beendet
die()die gesamte Antwort. Die bereits an den Browser gesendete Ausgabe bleibt erhalten; alles, was nach dem Aufruf in der Warteschlange steht, wird verworfen. Vermeiden Sie es in Funktionen, die wiederverwendbar sein sollen — geben Sie stattdessen einen Wert zurück oder werfen Sie eine Exception. - Ein ganzzahliges Argument gibt nichts aus.
die(1)zeigt keine1an; wenn der Benutzer eine Meldung sehen soll, übergeben Sie einen string oder geben Sie ihn vor dem Aufruf vondie()aus. - Bevorzugen Sie Exceptions im Anwendungscode.
die()kann nicht abgefangen, einfach getestet oder wiederhergestellt werden. Reservieren Sie es für eigenständige Skripte und schnelle Diagnosen.
Fazit
die() (und sein Pendant exit()) beendet ein PHP-Skript sofort, gibt dabei optional eine Meldung aus oder setzt einen Exit-Status. Es eignet sich hervorragend für schnelle Absicherungen in eigenständigen und Kommandozeilenskripten, aber für die Logik von Produktionsanwendungen sollten Sie auf Exceptions und ordentliche Fehlerbehandlung setzen, damit Fehler abfangbar bleiben. Um tiefer in das Schreiben und Strukturieren von Code einzutauchen, der es aufruft, lesen Sie PHP-Funktionen.