Einige Unterscheidungen, die hier nicht angesprochen wurden:
- Mit exec () können Sie eine optionale Parametervariable übergeben, die ein Array von Ausgabezeilen empfängt. In einigen Fällen kann dies Zeit sparen, insbesondere wenn die Ausgabe der Befehle bereits tabellarisch ist.
Vergleichen Sie:
exec('ls', $out);
var_dump($out);
// Look an array
$out = shell_exec('ls');
var_dump($out);
// Look -- a string with newlines in it
Wenn die Ausgabe des Befehls hingegen xml oder json ist, ist es nicht das, was Sie möchten, jede Zeile als Teil eines Arrays zu haben, da Sie die Eingabe in eine andere Form nachbearbeiten müssen. Verwenden Sie in diesem Fall also shell_exec .
Es ist auch erwähnenswert, dass shell_exec ein Alias für den backtic-Operator ist, für diejenigen, die an * nix gewöhnt sind.
$out = `ls`;
var_dump($out);
exec unterstützt auch einen zusätzlichen Parameter, der den Rückkehrcode des ausgeführten Befehls bereitstellt:
exec('ls', $out, $status);
if (0 === $status) {
var_dump($out);
} else {
echo "Command failed with status: $status";
}
Wie auf der Handbuchseite shell_exec angegeben, haben Sie keine andere Wahl, als exec zu verwenden, wenn Sie tatsächlich einen Rückkehrcode für den ausgeführten Befehl benötigen.
date
,whoami
,ifconfig
,netstat
.