# exec

(PHP 4, PHP 5, PHP 7, PHP 8)

exec — Führt ein externes Programm aus

### Beschreibung

exec(string `$command`, array `&$output` = `null`, int `&$result_code` = `null`): string|false

exec() führt einen angegebenen Befehl (`command`) aus.

### Parameter-Liste

`command`

  Der auszuführende Befehl

`output`

  Ist der Parameter `output` vorhanden, wird das angegebene Array mit jeder Zeile der Befehlsausgabe gefüllt. Am Ende einer jeweiligen Zeile stehende Whitespaces wie beispielsweise ein `\n` werden nicht in dieses Array übernommen. Beachten Sie, dass wenn das Array bereits Elemente enthält, die Funktion exec() die Ausgabe an das Array anhängt. Wenn Sie dieses nicht wünschen, rufen Sie die Funktion unset () für das Array auf, bevor Sie es als Parameter der Funktion exec() übergeben.

`result_code`

  Ist der Parameter `result_code` zusammen mit dem Parameter `output` angegeben, so wird der Rückgabestatus des ausgeführten Befehls in diese Variable geschrieben.

### Rückgabewerte

Die letzte Zeile der Ausgabe des Befehls. Wenn ein Befehl ausgeführt werden muss und alle Daten des Befehls direkt ohne Umweg über ein Array ausgegeben werden sollen, kann die Funktion passthru() verwendet werden.

Gibt bei einem Fehler `false` zurück.

Um die Ausgabe des ausgeführten Befehls zu erhalten, muss sichergestellt werden, dass der Parameter `output` gesetzt und verwendet wird.

### Fehler/Exceptions

Wenn exec() den Befehl `command` nicht ausführen kann, wird eine Meldung der Stufe `E_WARNING` ausgegeben.

Löst einen ValueError aus, wenn `command` leer ist oder Nullbytes enthält.

### Changelog

Version | Beschreibung
--- | ---
8.0.0 | Wenn `command` leer ist oder Nullbytes enthält, löst exec() nun einen ValueError aus. Zuvor gab die Funktion ein `E_WARNING` aus und gab `false` zurück.

### Beispiele

Beispiel #1 Ein exec()-Beispiel

`<?php
// Gibt den Benutzernamen aus, unter dem der PHP/HTTPD-Prozess läuft
// (auf einem System in dem das Programm "whoami" im Ausführungspfad liegt)
exec('whoami', $output, $retval);
echo "Rückgabe mit Status $retval und Ausgabe:\n";
print_r($output);
?>`

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

    Rückgabe mit Status 0 und Ausgabe:
    Array
    (
        [0] => cmb
    )

### Anmerkungen

Warnung

Falls Sie es erlauben, dass Daten von Usereingaben an diese Funktion weitergereicht werden, sollten Sie escapeshellarg() oder escapeshellcmd() verwenden. Bei Verwendung dieser Funktionen stellen Sie sicher, dass kein Benutzer Ihr System überlisten kann, beliebige Kommandos auszuführen

> Hinweis:

> Wenn ein Programm mit dieser Funktion gestartet wird und im Hintergrund weiterlaufen soll, muss die Ausgabe des Programms in eine Datei oder einen anderen Ausgabestrom umgeleitet werden. Anderenfalls bleibt PHP solange hängen, bis das Programm zu Ende ausgeführt wurde.

> Hinweis:

> Unter Windows startet exec() zunächst cmd.exe um das Kommande auszuführen. Um ein externes Programm auszuführen ohne zuvor cmd.exe zu starten, sollte proc_open() mit der Option `bypass_shell` verwendet werden.

### Siehe auch

- system() - Führt ein externes Programm aus und zeigt dessen Ausgabe an
- passthru() - Führt ein externes Programm aus und zeigt dessen Ausgabe an
- escapeshellcmd() - Maskiert Metazeichen der Shell
- pcntl_exec() - Führt ein angegebenes Programm im aktuellen Prozessraum aus
- backtick operator

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open